我没有完全掌握的一件事是,当缓存 list 在线时是否也充当所有列出文件的预取。
例如,假设我正在访问:
/page1.html
我网站上的每个页面都有相同的声明:
<html manifest="/cache.manifest">
在缓存 list 文件中,我有:
CACHE MANIFEST
/page2.html
/page3.html
/page4.html
所以会发生的是我首先访问/page1.html,当我在线时,我的浏览器也会知道缓存页面 2-4。当我断开连接并访问第 2-4 页时,一切都会正常加载,因为它已经被缓存了。
问题:如果我访问/page1.html,并且仍然在线,然后访问/page2.html,我的浏览器是否仍会请求/page2.html,或者不会对服务器的另一个请求并使用它从/cache.manifest 文件中缓存的内容?本质上就像 firefox 使用的预取链接一样?
最佳答案
嗯,spec说“所有文件”,对于 html 文件没有任何异常(exception),所以我认为它像其他任何文件一样适用于 html 文件,它是从缓存中获取的,而不是服务器。但是,我没有进行任何测试来证实这一点。我会做以下事情:
创建以下缓存 list 文件:
CACHE MANIFEST
/page1.html
/page2.html
/page3.html
/page4.html
将其包含在四个缓存 list 文件中的每一个中。然后:
- 访问page1.html
- 编辑 page2.html 使其与您访问 page1.html 之前不同
- 访问page2.html
- 查看您获得的是哪个版本。
请确保您在所有浏览器上都尝试过。我很想看看您的结果。
关于HTML5 缓存 list 和预取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143319/