5

我没有完全理解的一件事是,当缓存清单对列出的所有文件在线时,它是否也充当预取。

例如,假设我正在访问:

/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使用的预取链接?

4

3 回答 3

2

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

创建以下缓存清单文件:

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

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

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

确保在所有浏览器上试用。我很想看看你的结果。

于 2011-05-26T21:39:24.617 回答
1

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

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

CACHE MANIFEST

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

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

于 2013-03-15T10:12:47.080 回答
0

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

于 2011-05-26T18:58:23.070 回答