我正在尝试使用ASP.NET构建iPhone Web应用程序。该页面为每个访问者动态呈现一次。此时,该页面可以被加入书签,并且该访问者将永远不会再次更改该页面。出于这个原因,它应该从那一点开始本地缓存,因此即使没有可用的网络连接,如果从书签引用,应用程序也会运行。无论我尝试什么,手机都会继续请求来自服务器的页面强制重新渲染,如果手机处于脱机状态则会失败。
在Louis Gerbarg帖子中建议this我使用HTML5缓存清单来实现此功能,但w3.org docs之后似乎不适用于iPhone。有没有人有一个应用程序缓存正在运行的好例子?
答案 0 :(得分:7)
缓存清单文件必须以“text / cache-manifest”mime-type提供。这绝对是至关重要的,没有它就行不通。如果您导航到清单文件的URL,则应触发下载...
此外,我发现将标记中的清单位置作为绝对位置,以及清单文件中的所有条目更有效。
答案 1 :(得分:5)
我回答了您之前提到的与此相关的问题,但是从这个问题来看,您试图缓存动态内容并不清楚。缓存清单用于获取您希望离线Web应用程序运行的静态内容。
我不确定你能做你想做的事。您是否希望该应用程序能够脱机运行,或者您只是想在缓存中查找某些东西,因为它下载速度很慢?除非您实际构建一个离线Web应用程序(用户将其添加为Spring Board中的书签或应用程序),否则您的页面可以(并且必须)在浏览器自行决定的情况下从本地存储中逐出,无论多么宽松您在页面上设置的缓存策略。
答案 2 :(得分:2)
您应该使用适用于iPhone和Safari 3.1的Safari Javascript数据库API。它适用于本地缓存和数据存储:
http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/
答案 3 :(得分:1)
可能与输出的大小有关。
我无法谈论任何专门为iphone调整内容的严肃经验,但是这里有一个来自YUI团队的有趣读物:http://yuiblog.com/blog/2008/02/06/iphone-cacheability/,表示可以持有的最大的解压缩缓存文件在iphone中是25k,为了获得最佳缓存,尽可能多的组件应该<25k。
这可能是您遇到问题的原因,但这只是猜测。
答案 4 :(得分:0)
如果有兴趣的话,这里是我为构思概念而构建的app缓存的简单演示。 您需要检查浏览器支持的内容,但这适用于IP 3.5上的FF 3.5和Safari http://demos.hahana.co.uk/app-cache-demo.html