HTML5浏览器挂起到缓存的清单文件

时间:2012-08-03 17:58:29

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

我使用的是HTML5 appcache,而且大部分都运行良好。但是,有时,用户'浏览器(Chrome或Safari)将保留在缓存的清单文件中,即使我肯定服务器在评论中有一个全新的清单文件,其中包含唯一的版本号(例如" #app version 1.0 .0.8"或其他)。

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

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

谢谢,

安迪

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

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