HTML5缓存清单和预取

ada*_*dam 5 html html5 prefetch browser-cache

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

例如,假设我正在访问:

/page1.html
Run Code Online (Sandbox Code Playgroud)

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

<html manifest="/cache.manifest">
Run Code Online (Sandbox Code Playgroud)

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

CACHE MANIFEST
/page2.html
/page3.html
/page4.html
Run Code Online (Sandbox Code Playgroud)

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

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

Gau*_*rav 2

好吧,规范说“所有文件”,对于 html 文件没有任何例外,所以我认为它适用于 html 文件,就像任何其他文件一样,它是从缓存中获取的,而不是从服务器中获取的。但是,我还没有进行任何测试来证实这一点。我会做以下事情:

创建以下缓存清单文件:

CACHE MANIFEST
/page1.html
/page2.html
/page3.html
/page4.html
Run Code Online (Sandbox Code Playgroud)

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

  1. 访问page1.html
  2. 编辑 page2.html 使其与您访问 page1.html 之前不同
  3. 访问page2.html
  4. 查看您获得的是哪个版本。

确保在所有浏览器上都进行了尝试。我有兴趣看看你的结果。