我一直在测试一个iPhone视图控制器,它使用UIWebView加载外部内容,而不是项目包中的资源.另一位工程师注意到Web视图根本没有缓存,所以我进行了一些研究.一些较旧的问题表明UIWebView无法缓存外部内容.
以前关于UIWebView缓存的SO问题:
这些帖子非常混乱,但我注意到在iOS 4.0问世之前他们都被问到了.我测试了以下缓存方法,这看起来很简单.
NSURLRequest *request = [NSURLRequest requestWithURL:myUrl
cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];
[webView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)
这似乎在iOS 4.3上运行良好,但在iOS 3.0上根本不起作用.我通过将设备指向Charles代理(在iPhone上,设置 - > WiFi,手动代理)并将流量记录到我的服务器来测试.
UIWebView是否开始在iOS 4.0中观察缓存策略?任何人都可以证实这一点,还是我想象的事情?
我曾考虑过编写自定义URL缓存,但似乎NSURLCache应该支持磁盘缓存.我希望我的iphone应用程序使用缓存的响应,而不会直到资源变得陈旧(由我从服务器发回的标头确定).
我是否必须使用NSURLConnection打电话?如何让iphone使用网址的缓存版本?
更新:这是我的代码的链接