我正在开发一个Web应用程序,它的行为非常类似于iOS和Android的本机应用程序。然而,Javascript文件(jQuery +我自己的)和css文件一起用于移动使用,如果用户没有启用3G,这会使应用程序加载缓慢。
因此我开始考虑离线存储这些文件。然而,除了cache.manifest(据我所知,只有当没有互联网连接启用离线使用时才开始),我找不到这个。理想情况下,我想检查文件是否已经缓存/存储,如果没有,请使用它们,然后再存储它们。
这可能吗?这将减少加载我的应用程序的时间,因为索引文件本身非常小。我仍在努力通过优化减少文件,但在此期间这将有很大帮助。
只是提供更多细节,对不起,如果我以前不清楚。
我已经开始使用HTML5样板构建此webapp,而我的.htaccess文件包含所有JS和CSS文件头,有效期为1年。
但似乎从iOS主屏幕打开应用程序每次都会加载.js和.css文件,就像没有缓存时一样。在桌面或甚至iOS Safari Web浏览器上打开网站似乎确实以正确的方式缓存文件,因为只有在手动刷新页面后才会显示Javascript和CSS中的更改。
似乎打开和关闭并从主屏幕打开网络应用程序充当刷新,因此每次加载文件,即使它们通过cache.manifest存储以供离线使用,以及文件'到期日期远远落后于未来。
以为我会包含文件的缓存标头。这些似乎没问题。
Cache-Control max-age = 31536000,public
2012年5月18日星期五17:34:20格林尼治标准时间到期
改变接受编码,用户代理
Content-Encoding gzip Keep-Alive timeout = 2,max = 98
答案 0 :(得分:2)
答案 1 :(得分:1)
应该可以让浏览器缓存像javascript包含的资产(虽然这些指令可能被用户覆盖,但可能不用担心)。有关缓存的崩溃课程,请参阅here。特别要看HTTP标题:
Cache-Control: public
应强制浏览器缓存资产。不确定这是否适用于会话,例如,如果浏览器已关闭并重新打开,但至少在用户首次访问您的站点时只会发出一个请求,并且在后续页面查看时不会再次请求。< / p>
另外,请确保您的javascript包含最小化,并参阅here了解有关加快速度的一般提示。
答案 2 :(得分:0)
iOS不会将资源缓存超过25k。 localStorage应该工作。
答案 3 :(得分:0)
我也一直试图在没有任何运气的情况下完成这项工作。似乎唯一的方法是:
我只有一半,但它已经比取决于appCache好多了。
编辑:请注意,这仅适用于多页应用。如果您正在构建单页JS应用程序,我认为将值存储在localStorage中是不值得的。你也可以只是内联所有内容并保持最佳状态。