1

当我更新我的清单并加载页面时,我检查了开发人员工具我已更改的脚本。它不在那里。我总是需要清除浏览器缓存才能加载它。我有一个用于更新缓存的侦听器:

$(function() {    
    if (window.applicationCache) {
    applicationCache.addEventListener('updateready', function() {        
        console.log("appcache updated");
            window.location.reload();

    });
    }
}
4

1 回答 1

3

使用 AppCache 时有很多问题。

我建议的第一件事是将 swapCache 方法添加到上面的代码中。例如

   $(function() {    
     if (window.applicationCache) {
       applicationCache.addEventListener('updateready', function() {        
         if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
           window.applicationCache.swapCache();
           console.log("appcache updated");
           window.location.reload();
         }
       });
     }
   }

以下是其他一些需要注意的事项:

  • 确保在更改代码时更新清单文件(听起来你正在这样做)
  • 将 javascript 处理程序添加到所有 applicationEvents 以帮助调试。看看这个http://www.html5rocks.com/en/tutorials/appcache/beginner/底部的一些代码。事实上,请阅读整页并确保您明白了。密切注意任何错误。
  • 请注意,即使您的清单发生更改,也不意味着浏览器会自动获取最新版本的文件。然后它将尝试请求,但仍可能从正常缓存中检索它们。这可以通过设置缓存标头来避免。请参阅HTML5 离线 Appcache 更新未在 Firefox 中显示

在 stackoverflow 的其他地方也有相当多的关于 AppCache 问题的答案。

如果这些没有帮助,也许发布一些代码,我们可以解决它。

于 2012-07-19T01:49:28.757 回答