2011-05-26 92 views
5

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

例如,可以说我今天要参观:

/page1.html 

每一个在我的网站上的网页都会有相同的声明:

<html manifest="/cache.manifest"> 

在缓存清单文件,我有:

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

那么会发生什么事是我访问/page1.html第一,当我在线上我的浏览器就会知道缓存p 2-4岁也。当我断开连接并访问第2-4页时,所有内容都会正常加载,因为它已被缓存。

问题:如果我访问/page1.html,我还在网上连接,并参观了/page2.html,将我的浏览器仍然要求了/page2.html,还是会不会再拍请求服务器并使用它从/cache.manifest文件缓存的内容?基本上就像firefox使用的预取链接一样?

回答

1

那么,spec说“所有文件”,没有任何例外的HTML文件,所以我认为它适用于HTML文件就像任何其他文件,它从缓存中取得,而不是服务器。但是,我没有做任何测试来证实这一点。我会做到以下几点:

创建以下缓存清单文件:

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

包括在四个缓存清单文件。然后:

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

请确保您在所有浏览器上试用。我会很乐意看到你的结果。

0

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

1

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

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

CACHE MANIFEST 

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

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