我正在尝试使用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的默认缓存协议