2010-03-31 28 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加载完成后。