我有这个问题UIWebView
:
客户要求检查我们的缓存策略,UIWebView
因为据他说,在重新加载页面时,服务器上更新的内容没有出现在设备上。
现在,我看到NSURLRequest
我们传递给 的UIWebView
有一个cachePolicy
,NSURLRequestReturnCacheDataElseLoad
这可以执行客户论点。如果我理解正确的话,只有第一个请求是从服务器加载的,后续请求是从缓存中加载的。
然后我将 cachePolicy 更改为NSURLRequestUseProtocolCachePolicy
,因为我在NSURLRequest.h
标题中看到有趣NSURLRequestReloadRevalidatingCacheData
的是“未实现”。
一切似乎都很好,直到我回滚到以前的策略并且我在 Charles 上看到每次UIWebView
消失然后重新出现在屏幕上时,都会在服务器上完成一个新请求,并模拟对结果页面的简单更改我也可以查看设备上的更改。
服务器返回的标头是顺便说一句:
Date Tue, 13 Aug 2013 09:46:46 GMT
Content-Encoding gzip
Server Apache
ETag "791e833a504a3a0f11fc74605ea244d2"
Vary Accept-Encoding
Content-Type text/html; charset=utf-8
Cache-Control public, max-age=60
Accept-Ranges bytes
Content-Length 2685
Expires Tue, 13 Aug 2013 09:47:46 GMT
对于 8 月 13 日 11:46 GMT+2(柏林)提出的请求
所以对我来说,标题看起来不错,但UIWebView
每次都尝试重新加载内容。
我还查看了webView:shouldStartLoadWithRequest:navigationType:
委托方法,发现 的cachePolicy
始终request
设置为 1 ( NSURLRequestReloadIgnoringLocalCacheData
)。
这怎么可能?还有客户怎么可能抱怨这个问题(他甚至给我发了截图,所以这不是发明的)
谢谢您的帮助