HTML5本地存储用于资源(样式表、JavaScript、图像等)

12
为了节省客户端下载时间和网络使用量,有没有可能使用HTML5的localStorage功能来存储链接样式表、JavaScript文件和二进制数据(例如图像)的内容,而不是每次都向服务器请求?
这样做会不会增加复杂性-因为我认为您必须通过JavaScript添加链接资源,而不仅仅是scriptlink元素,从而破坏禁用JavaScript的页面?除非您可以解析内容(使用HEAD请求检查上次修改日期和其他头信息)在浏览器下载它之前。
还是最好坚持使用304 Not ModifiedeTag头?
2个回答

9

我认为在这种情况下,您应该考虑离线缓存:

您还可以将用户输入数据存储在localStorage或sessionStorage中:

不要使用globalStorage(不是标准)。

我写了一篇关于离线的文章,请参阅:http://hacks.mozilla.org/2010/01/offline-web-applications/

虽然它是关于离线的,但这种机制也可以用来提高您的Web应用程序。


你可以在网站不离线的情况下从缓存中受益吗?还是最好让浏览器为样式表和JavaScript执行缓存(使用far expires heading并设置304 header - 尽管这会给PHP或ASP.NET增加额外的工作)。图像占用大量带宽且不发生更改,但仍在下载(似乎浏览器缓存未正常工作)。 - SamWM
只有在更新清单后(无论客户端连接状态如何),才会获取文件。 - Paul Rouget

3
你可以将图像/二进制数据进行base64编码,并将其存储为localStorage中的字符串。在某些浏览器中,使用base64 url无法正常工作,因此这不是一个完美的解决方案。
CSS和JS都可以,你可以将它们写入页面,或者也可以使用base64 url。
如果JS被禁用,LocalStorage将无法访问,所以不必担心这样做会破坏非JS用户的网站。

2
不运行 JavaScript 的人应该预计大多数网站会出现问题。开发人员必须提前考虑是否值得支持这些人。 - Camilo Martin
我认为,如果您正在添加需要JavaScript的功能,则不应完全废弃原始的回退行为。 - garrow
4
我完全支持优雅降级,但有时这需要编写额外的代码,这是一项额外的工作,而且在我看来有时候不值得。IE6也是同样的情况。 - Camilo Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接