HTML5缓存清单和预取

时间:2011-05-26 18:25:55

标签: html html5 browser-cache prefetch

我还没有完全掌握的一件事是,如果缓存清单在列出的所有文件处于联机状态时也充当预取。

例如,假设我正在访问:

/page1.html

我网站上的每个页面都有相同的声明:

<html manifest="/cache.manifest">

在缓存清单文件中,我有:

CACHE MANIFEST
/page2.html
/page3.html
/page4.html

所以会发生什么是我首先访问/page1.html,当我在线时,我的浏览器也会知道如何缓存2-4页。当我断开连接并访问第2-4页时,所有内容都会加载,因为它已经被缓存了。

问题:如果我访问/page1.html,并且我仍然在线连接,并访问/page2.html,我的浏览器是否还会请求/page2.html,还是不会另一个请求到服务器并使用从/cache.manifest文件缓存的内容?基本上就像firefox使用的预取链接一样?

3 个答案:

答案 0 :(得分:2)

嗯,spec说“所有文件”,没有任何html文件的例外,所以我认为它适用于html文件,就像其他任何文件一样,它取自缓存,而不是服务器。但是,我没有做任何测试来证实这一点。我会做以下事情:

创建以下缓存清单文件:

CACHE MANIFEST
/page1.html
/page2.html
/page3.html
/page4.html

将其包含在四个缓存清单文件中的每一个中。然后:

  1. 访问page1.html
  2. 修改page2.html,使其与访问page1.html
  3. 之前的不同
  4. 访问page2.html
  5. 查看您的版本。
  6. 确保在所有浏览器上试用。我很想看到你的结果。

答案 1 :(得分:1)

当我们使用缓存清单时,每次加载页面时都会从缓存中获取文件。 有一个解决方案。

您必须更改清单文件中的版本号,如果有的话,您已对HTML文件进行了任何更改。以便您的清单从服务器中提取最新版本的HTML并将其存储在缓存中。

CACHE MANIFEST

#v01
/page1.html
/page2.html
/page3.html
/page4.html

你可以将V01增加到02,03 ...所以,这将确保你的缓存将拥有最新版本的html页面

答案 2 :(得分:0)

我认为即使你在线,它也会从清单文件中获取它:)。你不能通过上传文件然后导航到页面来试试吗?