0

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

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

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

谢谢,

安迪

4

1 回答 1

1

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

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

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

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

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

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

它在“更新缓存”部分下。

于 2012-11-08T05:05:34.733 回答