【发布时间】:2010-09-25 14:48:31
【问题描述】:
我有一个简单的应用程序在UIWebView 中加载针对 iPhone 优化的网站。
问题是,缓存似乎不起作用:
[webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60.0]];
此远程页面中引用的任何内容(css、图像、外部 javascript 文件)永远不会被缓存(请求永远不会发送 If-Modified-Since 标头或任何其他缓存控制方式。)
有可能吗?似乎对于常规的 Cocoa WebView,有一个委托方法可以为每个资源请求和后加载 (-didFinishLoadingFromDataSource:) 调用,您可以使用它来滚动您自己的缓存.. 但这在这里似乎不适用。
我的整个页面(页面及其引用的资源)压缩到大约 89K.. 在某些地方这比 3G 慢,甚至比 EDGE 更糟。传入的请求至少表明它接受压缩 (accept-encoding=gzip, deflate),所以我想这很好。
我阅读了this yui study,这似乎表明 iPhone 将缓存每个项目 25k。唯一引用超过 25k 未压缩的是 jquery(打包但未压缩 - 它是 30k)。其他一切都应该是可缓存的。对获取的页面中引用的任何内容的请求都不会在服务器端触发 304。
那项 yui 研究是差不多一年前的事了,我猜只是移动 safari。
这是在原生 iPhone 应用程序中使用 UIWebView。
【问题讨论】:
标签: ios iphone cocoa-touch caching uiwebview