【发布时间】:2011-08-29 01:53:16
【问题描述】:
我正在开发一个 Web 应用程序,它的行为非常类似于适用于 iOS 和 Android 的本机应用程序。但是 Javascript 文件(jQuery + 我自己的)和 css 文件对于移动使用来说相当大,如果用户没有启用 3G,这会使应用程序加载缓慢。
因此我开始考虑离线存储这些文件。然而,除了 cache.manifest (据我所知,只有在没有互联网连接以启用离线使用时才会启动),我没有找到解决办法。理想情况下,我希望检查文件是否已被缓存/存储,如果没有,请使用它们,然后将它们存储以备下次使用。
这可能吗?这将大大减少加载我的应用程序的时间,因为索引文件本身非常小。我仍在努力通过优化来精简文件,但这在此期间会有很大帮助。
编辑:
只是为了提供更多细节,如果我之前不清楚,对不起。
我已经开始使用 HTML5 样板构建这个 webapp,我的 .htaccess 文件包含所有 JS 和 CSS 文件头,有效期为 1 年。
但似乎从 iOS 主屏幕打开应用程序每次都会加载 .js 和 .css 文件,就像它们没有被缓存时一样。在桌面甚至 iOS Safari 网络浏览器上打开网站似乎确实以正确的方式缓存文件,因为 Javascript 和 CSS 的更改仅在手动刷新页面后才会显示。
似乎从主屏幕打开和关闭和打开网络应用程序就像刷新一样,因此每次都会加载文件,即使它们是通过 cache.manifest 存储以供离线使用,并且文件'到期日期设定在遥远的未来。
编辑 2:
我以为我会包含文件的缓存头。这些似乎没问题。
缓存控制 max-age=31536000,公共
有效期至格林威治标准时间 2012 年 5 月 18 日星期五 17:34:20
改变接受编码,用户代理
Content-Encoding gzip Keep-Alive timeout=2, max=98
【问题讨论】:
-
您仍然需要传输文件一次。它不是在很远的将来设置正确的缓存头并让服务器正确响应请求吗?
-
将可以被浏览器缓存的文件副本冗余地保存在存储中似乎是一个糟糕的设计理念——不是很干燥。
-
如果使用 javascript 可以做到这一点,我可以设置它,这样它只适用于从主屏幕打开应用程序时。在这种情况下,缓存似乎不起作用,因此我需要一个解决方案,因为我想加快用户的初始加载速度。
-
@kennebec:当然,但从 Marcus 的说法来看,听起来浏览器没有缓存这些文件。理想情况下,当然可以,但如果没有在 Apple/Google 找到工作,Marcus 对此无能为力。
标签: jquery ios local-storage offline web-applications