iOS UIWebView无法缓存响应

时间:2015-07-14 19:27:46

标签: ios swift cocoa-touch caching uiwebview

我正在尝试使用NSURLRequestCachePolicy UseProtocolCachePolicy在UIWebView中缓存网页 - 但是,我可以从我的网络监视器验证UIWebView正在对每个请求执行完全重新加载并且从不加载存储缓存。

有一个较旧的question声称UIWebView忽略了给予它的任何NSURLRequest上的缓存设置。但是,这似乎无法确定。

以下是来自服务器的响应头 - 最相关的是Cache-Control: no-cache,它要求客户端在呈现之前重新缓存缓存;这似乎是可以接受的,因为Apple的默认缓存行为(如下所示)似乎解释了这一点。

更新

将缓存策略更新为ReturnCacheDataElseLoad将导致缓存加载 - 因此看起来UIWebview确实可以缓存响应;但是,无论多大年纪,这个功能都会返回一个缓存,这远远不是理想的。

Swift Code

let url = "http://web.page.com"
let requestURL = NSURL(string: url)
let request = NSURLRequest(URL: requestURL!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 15.0)

webView.loadRequest(request)

服务器响应标头

Accept-Ranges → bytes
Cache-Control → no-cache
Content-Encoding → gzip
Content-Length → 54794
Content-Type → text/html
Date → Tue, 14 Jul 2015 18:50:22 GMT
ETag → "807677b3872d01:0"
Last-Modified → Wed, 08 Apr 2015 14:31:29 GMT
Pragma → no-cache
Proxy-Connection → Keep-alive
Server → Microsoft-IIS/7.5
Vary → Accept-Encoding
X-Powered-By → ASP.NET
X-Robots-Tag → noarchive

Apple的默认缓存协议

enter image description here

0 个答案:

没有答案