【发布时间】:2011-02-03 02:27:34
【问题描述】:
我有一个 UIWebView 对象,缓存策略指定为:NSURLRequestReloadIgnoringLocalCacheData
这应该忽略本地缓存中的任何对象,并从网络上检索最新版本的站点。
但是,在站点的第一次加载(跟踪中的十个资源,HTTP GET)之后,站点的所有后续加载仅检索一小部分资源(跟踪中的三个资源,HTTP GET)。这些图像似乎都是从某个本地来源加载的。
我已确认我的 sharedURLCache 的内存使用量为 0 字节,磁盘使用量为 0 字节。每当该过程重新开始时,就会再次检索该站点的完整版本。这让我相信这些资源被存储在内存缓存中,但正如我之前提到的,[[NSURLCache sharedURLCache] currentMemoryUsage] 返回 0。
我也尝试过为我的请求显式删除缓存的响应,但这似乎没有效果。什么给了?
编辑: 此外,NSHTTPCookieStorage 在每次加载之前都会被清除,我可以确认后续加载现在检索到四个资源而不是三个。无论更改如何,缓存问题仍然存在。
【问题讨论】:
-
您能解决问题吗?我尝试了 SO 和其他地方提到的所有解决方案,但无法完成。此外,一些应用程序似乎成功地做到了这一点,比如 iOS 的 httpwatch。
-
使用 [[NSURLCache sharedURLCache] removeAllCachedResponses];似乎解决了缓存问题,但随着 iOS 7.0 的更新,此方法导致 [NSURLCache sharedURLCache] 对象在它的 malloc/delete 堆栈中崩溃。
标签: iphone caching uiwebview nsurlcache