【问题标题】:HTML5 App Cache: Manifest ist updated but files are taken from appcache one more timeHTML5 应用程序缓存:清单已更新,但文件又从应用程序缓存中获取了一次
【发布时间】:2012-09-20 00:58:44
【问题描述】:

我有一个带有注释的缓存清单

# Version 3.2

为了更新所有应用程序,我只需更改版本号。它有效,但是:

当我更新清单时,所有内容都会正确更新(新缓存已填满),但实际文件会从(旧)缓存中多花一次时间。当我重新加载两次时,一切都会更新。这种行为正确吗?使用 chrome 21。

谢谢

【问题讨论】:

    标签: html cache-manifest offlineapps


    【解决方案1】:

    是的,这是当前的“正确”行为。这就是发生的事情:

    当您刚刚更改清单文件并刷新浏览器时,会发生这种情况(假设您在线)

    • 浏览器首先加载回缓存中的所有文件
    • 然后浏览器在线检查您的清单文件
    • 它检测到清单文件已更改,然后继续下载新文件
    • 不过,请记住,此时您仍会查看“旧文件”,因为浏览器在上线下载“新文件”之前已经加载了旧文件
    • 如果此时再次点击刷新(第二次),您应该会得到“新文件”

    这是目前的标准行为。有些人放置了一些事件处理程序来提示用户进行另一次刷新(在第一次刷新之后)

    就个人而言,我认为浏览器应该负责提醒用户在完成下载新文件后再次刷新,但是现在,大多数人都会从“window.applicationCache”中放入事件处理程序来触发事件以帮助管理这个。

    要查看使用 window.applicationCache 的示例,请转到此处:http://www.html5rocks.com/en/tutorials/appcache/beginner/

    它位于“更新缓存”部分。

    【讨论】:

      【解决方案2】:

      here 所述,可以立即交换缓存:

      function updateSite(event) {
          window.applicationCache.swapCache();
      }
      window.applicationCache.addEventListener('updateready', updateSite, false);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 2012-08-02
        • 2011-09-09
        • 1970-01-01
        • 2014-12-11
        相关资源
        最近更新 更多