Ios UIWebView缓存策略的奇怪行为

Ios UIWebView缓存策略的奇怪行为,ios,uiwebview,nsurlrequestcachepolicy,Ios,Uiwebview,Nsurlrequestcachepolicy,我在UIWebView中遇到此问题: 客户要求检查我们的UIWebView的缓存策略,因为据他说,服务器上更新的内容在重新加载页面时没有出现在设备上 现在,我看到我们传递给UIWebView的NSURLRequest有一个cachePolicy的NSURLRequestReturnCacheDataElseLoad,它可以强制执行客户论点。如果我理解正确,只有第一个请求从服务器加载,后续请求从缓存加载 然后我将cachePolicy更改为NSURLRequestUseProtocolCacheP

我在
UIWebView
中遇到此问题:

客户要求检查我们的
UIWebView
的缓存策略,因为据他说,服务器上更新的内容在重新加载页面时没有出现在设备上

现在,我看到我们传递给
UIWebView
NSURLRequest
有一个
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
始终设置为1(
nsurlRequestReloadingLocalCacheData

这怎么可能?还有,客户怎么可能抱怨问题(他甚至给我发了一张截图,所以这不是虚构的)


感谢您的帮助

最终,我使用
NSURLRequestUseProtocolCachePolicy
手动创建了
NSURLRequest
,并启动了
NSURLConnection
。然后,当连接加载完毕时,我加载了HTML字符串。

我遇到了同样的问题。您找到这个问题的解决方案了吗?是的,最终我使用NSURLRequestUseProtocolCachePolicy手动创建了NSURLRequest,并启动了与该策略的NSURLConnection。然后,当连接完成加载时,我加载了HTML字符串。因此,您没有使用UIWebView的loadRequest:函数加载页面,而是手动加载,然后将HTML加载到UIWebView?是的,完全一样。谢谢。你可以回答自己的问题并接受答案。