我有一个简单的应用程序加载一个针对iPhone优化的网站UIWebView.
问题是,缓存似乎不起作用:
[webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60.0]];
Run Code Online (Sandbox Code Playgroud)
此远程页面中引用的任何内容(css,图像,外部javascript文件)都不会被缓存(请求永远不会以缓存控制的方式发送If-Modified-Since标头或其他任何内容.)
可能吗?在普通的Cocoa WebView中,似乎有一个委托方法可以调用每个资源请求并发布load(-didFinishLoadingFromDataSource:),您可以使用它来滚动自己的缓存..但这似乎不适用于此.
我的整个页面(页面及其参考资源)压缩了大约89K ..这在一些地方比3G慢,甚至比EDGE更糟糕.传入请求至少表明它接受compression(accept-encoding=gzip, deflate),所以我认为这很好.
我读了这个yui研究,这似乎表明iPhone每个项目将缓存25k.引用的唯一超过25k未压缩的是jquery(打包但未压缩 - 它是30k).其他一切都应该是可缓存的.在获取的页面中引用任何内容的请求都不会在服务器端触发304.
那个yui研究来自差不多一年前,我猜测只有移动野生动物园.
这是UIWebView在本机iPhone应用程序中使用.
我知道最近在iphone sdk中引入了一些缓存类,并且还有来自three20库的TTURLRequest,它允许您将请求缓存到URL.但是,因为我通过调用UIWebView的loadRequest在UIWebView中加载网页,所以这些技术并不适用.
任何想法如何保存网页,以便在下一个应用程序启动时,我不必再从网页上获取完整页面?页面本身已经有一些ajax机制,可以自动更新部分内容.
我正在尝试构建一个具有一个UIWebview的iPad应用程序.内容在asp.net中.现在一个主要要求是我的应用程序应该支持离线模式.
首先,我尝试查看Html5缓存清单但是根据这个SO答案它不适用于UIWebview
然后我尝试搜索UIWebview可用的缓存机制,我发现很多关于SO的问题(This,This,This,This)但是没有得出结论或者在这种情况下可能是老的.
我的基本要求是哪个页面用户浏览应该获得缓存(html,css,js.images),下次当用户访问同一页面时应该从缓存中传递.
所以我的问题是
1)如何使用Html5缓存清单或UIWebview缓存来实现这一点
2)我的应用程序使用了大量的图像,其中一些是以MB为单位,因此有任何大小限制
我真的很感激,如果有人可以提供完整的教程参考.谢谢.
**更新:**我可以一起利用本地磁盘缓存(用于图像)和html5本地存储(用于数据)吗?如果是,那么我如何提供本地图像路径.