【发布时间】:2011-04-26 18:25:28
【问题描述】:
谁能向我解释一下 HTML 5 的缓存清单与使用其他文件头技术告诉浏览器缓存文件有何不同?
【问题讨论】:
-
这是一个想法:我“相信”常规磁盘缓存和新的 html5 离线缓存之间的主要区别在于,当离线工作(或没有互联网连接)时,不会使用传统磁盘缓存或可用于呈现页面,而离线缓存将。
谁能向我解释一下 HTML 5 的缓存清单与使用其他文件头技术告诉浏览器缓存文件有何不同?
【问题讨论】:
我觉得很奇怪发布一个你提出的问题的答案,评论和回答了你自己,但我认为你在这个话题上的绝对垄断近两年就足够了。 ;)
HTML5 缓存清单与传统 HTTP 标头之间的主要区别:
最后一点非常方便,可让您轻松交换需要连接的网站部分,例如。包含可选 cmets 的占位符,如果没有连接或您想要的任何内容,用户将无法获得全部功能。
有关支持,请参阅Compatibility table for support of offline web applications in desktop and mobile browsers。毫不奇怪 IE 总是有一些问题,目前 Opera Mini 不支持它,所以我建议如果你使用缓存清单,那么也使用传统的 HTTP 标头(HTTP/1.1 Cache-控制和 HTTP/1.0 过期 - 请参阅 RFC 2616 sec. 14.9.3)。
您可以更好地控制 JavaScript 中的整个缓存过程,例如。您可以使用 window.applicationCache.swapCache() 方法强制更新您网站的缓存版本,而无需手动重新加载页面。 HTML5 Rocks(下面的链接)上有一些很好的代码示例,解释了如何将用户更新到您的网站或 Web 应用程序的最新版本。
请记住,您需要为缓存清单提供正确的 HTTP 标头,特别是 Content-Type 和与缓存相关的标头,以便您的浏览器知道它是一个缓存清单,并且应该始终检查它是否有新版本。例如,Github 如何为 GitHub Pages 提供缓存清单:
Content-Type: text/cache-manifest
Cache-Control: max-age=0
Expires: [CURRENT TIME]
其中 [CURRENT TIME] 是正确格式的当前 GMT 时间(请参阅RFC 2616 sec. 3.3)。
以下是一些可以帮助您入门的资源:
另请参阅我最近对这些相关问题的回答:
【讨论】:
我“相信”常规磁盘缓存和新的 html5 离线缓存之间的主要区别在于,当离线工作(或没有互联网连接)时,传统的磁盘缓存不会用于或无法用于呈现页面,而离线缓存会。
【讨论】: