【问题标题】:HTML5 browsers hanging on to cached manifest file挂在缓存清单文件上的 HTML5 浏览器
【发布时间】:2012-08-03 17:58:28
【问题描述】:

我正在使用 HTML5 appcache 并且大部分情况下它运行良好。然而,有时,用户的浏览器(Chrome 或 Safari)会保留缓存的清单文件,即使我确信服务器有一个全新的清单文件,在评论中具有唯一的版本号(例如“# app version 1.0.0.8" 或其他)。

在 IIS(版本 6)中,内容过期设置为 1 天,这可能是问题所在吗?我似乎无法重现这个使调试变得困难的问题。作为预防措施,在 IIS 中,我已将存储清单文件的目录的内容过期更改为“立即过期”。这可以解释为什么即使有新版本可用,一些浏览器也会挂在清单文件上?

我还注意到,当浏览器以这种方式运行时,即使我删除了服务器上的清单文件,用户的浏览器也会使用它自己缓存的清单文件副本,如果文件是在我的理解中不再可用。

谢谢,

安迪

【问题讨论】:

    标签: html offline-caching cache-manifest offline-browsing manifest.cache


    【解决方案1】:

    取自我在这里的回答:https://stackoverflow.com/a/13282735/727575

    是的,这是当前的“正确”行为。它与 IIS 内容过期无关。这就是发生的事情:

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

    • 浏览器首先加载回缓存中的所有文件
    • 然后浏览器在线检查您的清单文件
    • 它检测到清单文件已更改,然后继续下载新文件
    • 但是,请记住,此时,您仍会查看您的“旧文件”,因为浏览器在上线下载“新文件”之前已经加载了旧文件
    • 如果此时再次点击刷新(第二次),您应该会得到“新文件”
    • 这是当前的标准行为。有些人放置了一些事件处理程序来提示用户进行另一次刷新(在第一次刷新之后)

    所以基本上,您需要刷新两次或从“window.applicationCache”中抛出一个事件来处理它

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多