如何检查UIURView是否从NSURLCache加载?

时间:2013-05-03 01:31:30

标签: ios caching uiwebview nsurlcache

我实际上对此有不止一个问题......我仍然是NSURLCache和UIWebViews的新手,但我认为不知不觉中了。

无论如何,我能够成功地为我的UIWebView实现缓存(我认为)。我初始化了NSURLCache。我的UIWebView使用loadRequest:方法加载其内容。我分配了拥有UIWebView作为其委托的ViewController。我还有ViewController实现NSURLConnectionDataDelegate。我实现了连接:willCacheResponse:方法只是为了在控制台中记录消息,所以我可以检查缓存是否完成。我还记录了当前的磁盘和内存使用情况。它在缓存后增加,因此我可以看到它确实有效。

但是,当我再次加载页面时,我认为请求再次发送到服务器,因为正在调用连接委托方法,如connection:didReceiveResponse:和connection:willCacheResponse。

我还想尝试使用cachedResponseForRequest:从缓存中获取cachedResponse:。我在webViewDidFinishLoad中调用了这个方法:但它总是返回null。缓存真的有效吗?

如何判断WebView是否从缓存中加载?我是否误用了cachedResponseForRequest:?而另一方面,对于缓存,至少应该存在哪些适当的Control-Cache头值?我正在测试谷歌的主页URL,它返回其缓存控制标头的私有值,但我可以看到缓存有效,因为连接:willCacheResponse:被调用。

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果你运行像CharlesFiddler这样的HTTP代理,你可以密切关注通过网络实际传输的网络流量(更少)。

您还可以检查请求/响应标头,以查看响应是否确实要发送到缓存。

请注意,在某些情况下,您可能会看到条件GET(返回304),这意味着客户端要求其缓存中包含的内容,但只想在服务器具有更新版本的情况下下载内容。< / p>