我正在开发一个web应用程序,它的行为非常类似于iOS和Android的原生应用程序。然而,Javascript文件(jQuery +我自己的)和css文件对于移动用户来说是相当大的,如果用户没有启用3G,这会使应用程序加载速度变慢。
因此,我开始考虑离线存储这些文件。然而,除了cache.manifest (据我所知,它只在没有互联网连接的情况下才能离线使用),我还没有找到解决这个问题的方法。理想情况下,我希望检查文件是否已经缓存/存储,如果没有,使用它们,然后为下一次存储它们。
这个是可能的吗?这将减少加载我的应用程序的时间,因为索引文件本身非常小。我仍然在努力通过优化来精简文件,但这将在此期间帮助很大。
编辑:
只是为了提供更多的细节,如果我之前说得不清楚,很抱歉。
我已经开始使用HTML5样板构建这个year应用程序,并且我的.htaccess文件包含所有的JS和CSS文件头,过期日期为1年。
但似乎每次从iOS主屏幕打开应用程序都会加载.js和.css文件,就像它们没有缓存时的情况一样。在桌面甚至iOS Safari web浏览器上打开网站似乎确实以正确的方式缓存了文件,因为Javascript和CSS中的更改只有在手动刷新页面后才会显示出来。
似乎从主屏幕打开和关闭web应用程序就像刷新一样,因此每次都会加载文件,即使它们是通过cache.manifest存储以供离线使用,并且文件的到期日期设置为很久以后的日期。
编辑2:
我想我应该包括文件的缓存头。这些看起来都没问题。
缓存控制最大年龄=31536000,公共
截止日期: 2012年5月18日17:34:20 GMT
不同的接受编码、用户代理
内容编码gzip Keep-Alive timeout=2,max=98
发布于 2011-05-20 01:35:51
发布于 2011-05-20 01:32:03
应该可以让浏览器缓存javascript include这样的资源(尽管最终这些指令可以被用户覆盖,可能不需要担心)。有关缓存的速成教程,请参阅here。特别是,请参阅HTTP标头:
Cache-Control: public这将强制浏览器缓存该资产。不确定这是否适用于会话,例如浏览器是否关闭并重新打开,但当用户第一次访问您的站点时,至少会发出一个请求,并且不会在随后的页面查看中重新请求。
还要确保你的javascript包含的内容被最小化,并查看here获取关于加速的一般提示。
发布于 2011-06-19 13:53:05
iOS不会缓存超过25k的资源。localStorage应该可以工作。
https://stackoverflow.com/questions/6062429
复制相似问题