【问题标题】:HTML5 cache manifest and prefetchingHTML5 缓存清单和预取
【发布时间】:2011-05-26 18:25:54
【问题描述】:

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

例如,假设我正在访问:

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

【问题讨论】:

    标签: html browser-cache prefetch


    【解决方案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. 查看您获得的版本。

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2010-09-21
          • 1970-01-01
          • 2012-07-01
          • 2012-02-20
          • 1970-01-01
          • 1970-01-01
          • 2011-01-04
          • 2016-07-04
          • 2011-11-27
          相关资源
          最近更新 更多