HTML 5 缓存 : window. applicationCache.abort();不起作用

标签 html html5-appcache

我正在开发一个具有离线模式的小型移动 Web 应用程序。 如果 list 文件已更改,有什么方法可以防止自动更新?如果用户的互联网连接不好,他不应该被迫下载所有文件,而是应该收到一条小消息,以便他可以稍后更新文件。

我试过了

window.addEventListener('load', function(e) {    
  window.applicationCache.addEventListener('ondownloading', function(e) {
      window.applicationCache.abort();
  }, false);
}, false);

但它不起作用。无论是在 Safari 6.0.2 还是在 Chrome Canary 中。

只有当用户使用以下代码手动点击我的“更新”按钮时,应用程序才应该更新文件:

var appCache = window.applicationCache;
appCache.update();

if (appCache.status == window.applicationCache.UPDATEREADY) {
  appCache.swapCache();  // The fetch was successful, swap in the new cache.
}

最佳答案

Jaffa 的回答无效。 (至少在 chrome 中)。

无论我们做什么,appcache 都会自动更新,因此控制客户端何时从服务器获取更新的唯一方法是在每个客户端(每个浏览器)的基础上管理每个缓存 list 。

浏览器将需要创建一个 BrowserID GUID 并将其存储在 localStorage 中。当它请求缓存 list 时,它应该在 URL 中包含 browserID。当服务器发送缓存 list 时,它会将其缓存在服务器端。 list 的每个后续请求都会返回缓存的版本。

当用户按下“同步”按钮时,浏览器会发送一个包含浏览器 ID 的缓存清除请求。这会导致使用该 BrowserID 的下一个缓存 list 请求返回更新后的 list ,而不是缓存的版本。

关于HTML 5 缓存 : window. applicationCache.abort();不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592382/

相关文章:

javascript - 使用响应式设计使图像流畅?

html - 如何在 ASP.NET MVC 中获取模型状态错误的集合?

javascript - 仅将 Json 数组中的一定数量的行输出到 HTML 表

couchdb - CouchDB 和 PouchDB 之间的数据不同步

javascript - 当应用程序缓存后备 URL 不可加载时会发生什么?

html5-appcache - 我是否需要在我的应用程序缓存中包含 http ://code. jquery.com/jquery.min.map ?

jquery - Bootstrap CSS 动态表格 Accordion

JavaScript Tic Tac Toe - 查找数组中所有可能的数字组合

javascript - angularjs rest get方法不适用于启用.appcache

javascript - 确保内容准备好在有限时间的环境中提供服务的最佳方法是什么?