HTML5缓存清单:后备部分&网络*

时间:2010-07-19 14:12:41

标签: html5 cache-manifest

来自Dive into HTML5: Cache Manifest: Fallback section

CACHE MANIFEST
FALLBACK:
/ /offline.html
NETWORK:
*

我不明白这个代码块究竟做了什么的URL。如果找不到任何内容,后备部分是否意味着显示offline.html页面

然后network: *所有资源都将被缓存?它也说

  

它使用常见的CSS,JavaScript和   每页上的图像。每一个   资源需要列出   明确地在CACHE

这似乎与network: *冲突似乎在说缓存一切?

2 个答案:

答案 0 :(得分:14)

缓存清单中有三种类型的标题,CACHE,NETWORK和FALLBACK。在CACHE下隐式设置任何不在标题下的内容。每个部分的解释:

CACHE:此标题下的文件将被缓存。

网络:此标题下的文件需要互联网连接,因此 NOT 将被缓存。

FALLBACK:此标题下的模式匹配的文件(例如匹配所有文件的模式“/”)并且尚未缓存,将显示一个后备文件。

关于从Dive到HTML 5的代码块,在它下面有一个“NETWORK:*”部分的解释:

  

这意味着,在您浏览时   这个假设的离线启用   维基百科在线,您的浏览器将   获取图像和视频等   嵌入式资源通常,即使   他们在不同的领域。 (这个   在大型网站中很常见,即使是   它们不是离线网络的一部分   应用。生成HTML页面   并在当地服务,而图像和   视频由CDN提供   另一个域。)没有这个通配符   flag,我们的假设离线启用   维基百科在行事时表现得很奇怪   你在网上 - 特别是,它   不会加载任何外部托管   图像或视频!

以下引用:

  

它使用常见的CSS,JavaScript和   每页上的图像。每一个   资源需要列出   明确地在CACHE中

表示您必须在CACHE标题下的清单中包含所有必需的CSS,Javascript和图像文件。它与'NETWORK:*'不冲突,因为NETWORK标题 NOT 意味着'缓存所有内容'。它实际上意味着相反:NETWORK标题下的所有内容都需要互联网连接,不应缓存。

答案 1 :(得分:7)

我发现了更多有关FALLBACK的有用信息:

经过一些实验,我尝试了各种各样的事情,包括FALLBACK中的文件是否应该出现在CACHE或NETWORK部分中。答案似乎是否定的。

举个例子...... 倒退: sign-up-portrait.png offline-portrait-1.png sign-up-landscape.png offline-landscape-1.png

我最近在我的一个微网站上指定了这个。目的是在线时显示sign-up-png文件,在离线时显示offline-png文件。这很好用。特别是每行左侧的文件隐含地好像它们在NETWORK部分中一样,该站点将始终尝试使它们联机。它们也不能添加到NETWORK部分,否则它似乎会覆盖FALLBACK中的内容。 另外,幸运的是,右边的文件隐含式地好像是在CACHE:部分中添加的,所以即使它们最初没有被使用,它们也会在第一次加载时被缓存,而不必将它们显式地添加到CACHE:尽管你可以在那里添加它们你也想要。没有区别。

对于这个配置,查看网络服务器日志,我看到每次刷新页面时,apache都会针对清单文件和该版本页面所需的sign-up-png文件记录304(这是CSS媒体选择器根据页面大小确定哪个。因此,它正确地检查sign-up-png文件以及通常的清单检查,这正是我想要的。

为了彻底,我试图查看根文件是否也需要在CACHE:部分中。事实证明它没有!如果您的顶级文件是index.html并且它的html标记中指定了清单文件,那么清单文件不需要在任何地方包含index.html,它会被隐式缓存。

我很好奇应用缓存可以扩展多远。你能包括链接到或在iframe中的其他html文件吗?或者那些都需要拥有自己独立的清单文件?有人关心评论吗?

关于格式的一个评论,不要犯我做的错误,这是放入...... 网络 file1.js

缺少冒号导致它完全破裂,认为NETWORK本身就是一种资源。

一定是...... 网络: file1.js