2010-03-31 53 views
3

我有一個UIWebView對象,與高速緩存策略指定爲:NSURLRequestReloadIgnoringLocalCacheDataUIWebView的NSURLRequestReloadIgnoringLocalCacheData實際上並沒有忽略緩存

這應該忽略任何對象都在本地緩存和檢索最新版本的網站網絡。

但是,在第一次加載站點(跟蹤中的10個資源,HTTP GET)之後,站點的所有後續加載僅檢索一小部分資源(跟蹤中的三個資源HTTP GET)。這些圖像全部顯示爲從本地源加載。

我已確認我的sharedURLCache具有0字節的內存使用情況和0字節的磁盤使用情況。每當過程重新開始時,網站的完整版本將再次被檢索。這導致我相信這些資源被存儲在內存中的緩存中,但正如我之前提到的,[[NSURLCache sharedURLCache] currentMemoryUsage]返回0.

我也嘗試明確刪除緩存的響應爲我的請求,但這似乎沒有效果。是什麼賦予了?

編輯: 此外,NSHTTPCookieStorage在每次加載之前都被清除,並且我可以確認後續加載現在檢索四個資源而不是三個。無論更改如何,緩存問題都會持續存在。

+0

您能解決問題嗎?我嘗試了SO和其他地方提到的所有解決方案,但無法完成此項任務。此外,一些應用程序似乎這樣做,成功地說iOS的httpwatch。 – Ravi 2013-11-18 16:46:41

+0

使用[[NSURLCache sharedURLCache] removeAllCachedResponses];似乎解決了緩存問題,但通過iOS 7.0更新,此方法導致[NSURLCache sharedURLCache]對象在其malloc/delete堆棧中崩潰。 – dodeskjeggen 2013-11-20 14:45:33

回答

2

您是否嘗試過將當前時間間隔的時間戳添加到URL中作爲查詢字符串參數,例如:

http://www.myhost.com/page.html?timestamp=123456789.0 

我不知道這是否有效,它取決於如何實現緩存,但它可能值得一試;這有點古怪,但我很久以前就在使用Flash小程序的很遠的一個銀河系中使用過它。我現在有同樣的問題,我甚至嘗試過使用:

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request]; 

UIWebView加載完成後。