2010-01-26 55 views
11

为了节省客户端下载时间和网络使用量,是否可以使用HTML5的localStorage功能来存储链接样式表,JavaScript文件和二进制数据的内容(例如图像),而不是每次都打到服务器?用于资产(样式表,JavaScript,图像等)的HTML5 localStorage

这样做是否会让事情变得复杂 - 因为我认为您必须通过JavaScript添加链接的资源,而不是仅仅使用scriptlink元素,为那些未启用JavaScript的用户打开页面)?除非在浏览器下载内容之前解析内容(使用HEAD请求检查最后修改日期和其他标题)。

还是最好只是坚持304 Not ModifiedeTag标题?

回答

9

我觉得在这种情况下,你应该考虑离线缓存:

你可以在的localStorage或sessionStorage的同时存储用户输入数据:

请勿使用globalStorage(不是标准)。

我已经写下线的文章,请参阅:http://hacks.mozilla.org/2010/01/offline-web-applications/

这是关于离线,但这样的机制可以用来提高你的web应用程序。

+0

您可以从缓存中受益而不使网站脱机吗?或者更好的做法是把它留给浏览器去做样式表和JavaScript(使用远期标题,并设置一个304标题 - 尽管这会在PHP或ASP.NET上做额外的工作)。图像占用大量带宽并且没有更改,但仍然被下载(就好像浏览器缓存工作不正常) – SamWM 2010-01-26 17:27:14

+0

仅当您更新清单时(无论客户端连接状态如何)才会提取文件。 – 2010-01-26 18:12:10

3

您可以base64编码您的图像/二进制数据,并将其作为字符串存储在localStorage中,使用base64网址在几个浏览器中不起作用,因此它不是一个完美的解决方案。

CSS和js会很好,你可以将它们写入页面,或者使用base64 url​​。

我不会担心这样做会打破非JS用户的网站,因为JS被禁用,您无法访问localStorage。

+2

没有运行js的用户应该会期望大多数网站都会崩溃。开发人员必须事先考虑是否值得支持这些努力。 – 2012-02-18 04:12:01

+0

我认为,如果您要添加需要javascript的功能,您并不完全不赞成原始的回退行为。 – garrow 2012-02-20 06:08:19

+4

是的,我都是优雅的退化,但有时候会涉及单独的代码,这是一个额外的努力,有时是不值得的,恕我直言。 IE6也是如此。 – 2012-02-20 08:46:03