【问题标题】:UIWebView NSURLRequestReloadIgnoringLocalCacheData doesn't actually ignore the cacheUIWebView NSURLRequestReloadIgnoringLocalCacheData 实际上并没有忽略缓存
【发布时间】: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


【解决方案1】:

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

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

我不知道这是否有效,这取决于缓存是如何实现的,但可能值得一试;这有点hacky,但我很久以前在遥远的银河系做Flash小程序时使用过它。我现在也遇到了同样的问题,我什至尝试过使用:

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request];

UIWebView 加载完成后。

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2022-07-29
    • 2018-08-17
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多