我有一个也可以离线使用的网站。我创建了一个使用 UIWebView
的应用程序,我说我的 UIWebView
应该使用以下代码缓存该网站
[self setRequestObj:[NSURLRequest requestWithURL:loadUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]];
如果我第一次使用互联网连接启动我的应用程序,我的控制台
记录
2016-08-24 15:37:01.713 BrowserApp[1991:345138] applicationDidBecomeActive!
2016-08-24 15:37:01.955 BrowserApp[1991:345138] NSURLRequestUseProtocolCachePolicy
2016-08-24 15:37:22.003 BrowserApp[1991:345138] applicationDidEnterBackground!
2016-08-24 15:37:22.559 BrowserApp[1991:345138] applicationWillEnterForeground!
2016-08-24 15:37:23.075 BrowserApp[1991:345138] applicationDidBecomeActive!
2016-08-24 15:37:37.069 BrowserApp[1991:345138] applicationDidEnterBackground!
2016-08-24 15:37:37.073 BrowserApp[1991:345138] applicationWillTerminate!
我看到在文件 AppDelegate.m
中调用了每个方法。我断开手机与互联网的连接,再次启动我的应用程序(不像我的 console
告诉的那样在后台运行),但没有任何反应。我只得到一个白色网站。
为什么网站
虽然我设置为缓存
,却没有显示在我的屏幕上?
最佳答案
可能是你加载的页面有过期日期(可能设置为立即过期)。尝试将 cahce 策略设置为 NSURLRequestReturnCacheDataElseLoad
(尽管从长远来看这可能不太好,因为它永远不会重新加载)。
或者,(更有可能)来自网站的响应 header 可能包含缓存控制 header 。不管你说什么,页面仍然可以告诉 NSURLRequest 它不应该被缓存。
要进行调查,您可以设置一个断点或在您处理确实收到响应的代码中放置一些日志记录。将 NSURLResponse
转换为 NSHTTPURLResponse
,然后使用 allHeaderFields
查看 header 。
关于ios - 缓存在 UIWebView 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39125591/