您可以在localStorage中存储JavaScript和CSS文件,以提高在线Web应用程序的性能吗?

Mar*_*iet 12 jquery offline web-applications local-storage ios

我正在开发一个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存储以供离线使用,文件的到期日期是远远落后于未来.

编辑2:

以为我会包含文件的缓存标头.这些似乎没问题.

Cache-Control max-age = 31536000,public
Expires Fri,2012年5月18日17:34:20 GMT
Vary Accept-Encoding,User-Agent
Content-Encoding gzip Keep-Alive timeout = 2,max = 98

Ric*_*d H 1

应该可以让浏览器缓存像 javascript include 这样的资源(尽管最终这些指令可以被用户覆盖,可能不需要担心)。请参阅此处有关缓存的速成课程。特别是查看 HTTP 标头:

Cache-Control: public
Run Code Online (Sandbox Code Playgroud)

这应该强制浏览器缓存资源。不确定这是否适用于跨会话,例如,如果浏览器关闭并重新打开,但当用户第一次访问您的网站时至少只会发出一个请求,并且不会在后续页面视图中重新请求。

还要确保您的 javascript 包含最小化,并请参阅此处以获取有关加快速度的一般提示。

  • 不过,与桌面浏览器相比,移动浏览器在缓存方面可能有点吝啬。例如,我认为原始 iPhone 的 Mobile Safari 不会缓存任何未压缩时大小超过 20 KB 的文件。 (3认同)