UIWebView NSURLRequestReloadIgnoringLocalCacheData实际上不会忽略缓存

时间:2010-03-31 19:49:02

标签: iphone caching uiwebview nsurlcache

我有一个UIWebView对象,其缓存策略指定为:NSURLRequestReloadIgnoringLocalCacheData

这应该忽略本地缓存中的任何对象,并从Web检索最新版本的站点。

但是,在第一次加载站点(跟踪中的十个资源,HTTP GET)之后,站点的所有后续加载仅检索一小部分资源(跟踪中的三个资源,HTTP GET)。所有图像似乎都是从某些本地来源加载的。

我已确认我的sharedURLCache的内存使用量为0字节,磁盘使用量为0字节。每当流程重新开始时,都会再次检索网站的完整版本。这让我相信这些资源存储在内存缓存中,但正如我之前提到的,[[NSURLCache sharedURLCache] currentMemoryUsage]返回0.

我还尝试过显式删除我的请求的缓存响应,但这似乎没有任何效果。是什么给了什么?

编辑: 此外,NSHTTPCookieStorage在每次加载之前被清除,我可以确认后续加载现在检索四个资源而不是三个。无论发生什么变化,缓存问题都会持续存在。

1 个答案:

答案 0 :(得分:2)

您是否尝试将当前时间间隔的时间戳附加到URL作为查询字符串参数,例如

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

我不知道这是否有效,这取决于缓存的实现方式,但值得尝试一下;它有点hacky,但很久以前我在使用Flash小程序时在遥远的星系中使用过它。我现在遇到同样的问题,我甚至尝试过使用:

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request];

UIWebView完成加载后。