window.applicationCache更新冻结浏览器 - 如何降低频率或强制它们由用户启动

amp*_*and 5 javascript html5 web-applications application-cache

我创建了一个Web应用程序,它缓存所有必要的代码和数据,以便通过applicationCache脱机使用.但是,每次应用程序启动时,它都会立即尝试检查更新.这会阻塞浏览器很长一段时间,即使它没有找到任何要更新的内容.这种行为对应用程序具有很大的破坏性(不应该在后台进行更新,无论如何?).只是检查阶段需要在移动设备上花费大量时间,如果它发现更新,所有下注都将关闭下载需要多长时间(b/c它必须重新下载所有文件) - 这也冻结了浏览器.

所以,我想知道:

  1. 有没有办法将applicationCache更新委托给共享的Web Worker?要么
  2. 有没有办法阻止所有applicationCache更新,直到用户特别想检查更新并按下一个按钮,通过applicationCache.update()启动更新?要么
  3. 还有其他方法可以减少检查更新所花费的时间吗?
  4. 应用程序缓存更新不应在后台异步运行吗?



编辑:清单文件上可能是一个精心构造的缓存控制头是答案吗?我会调查这个,但我希望有人可以给我更多关于这些更新的信息.谢谢.


UPDATE

好吧,我玩过标题,没有任何帮助.我开始赏金了.如果你能提供帮助,请做!

Chr*_*ris 1

如果您想让用户对实际更新有更多的控制权,您可以使用特定于该用户的内容来参数化清单 URL。然后,当用户想要更新时,您向服务器发出请求,该服务器滚动该特定用户的清单文件,然后在客户端重新加载页面以强制重新加载清单。

从那时起,我一直在阅读并发现这篇文章,如果用户已经位于缓存页面上,这似乎是一个更优雅的解决方案 -

http://www.html5rocks.com/tutorials/appcache/beginner/#toc-updating-cache

至于清单最新检查所涉及的加载时间,这不是我遇到过的问题。我的理解是它发生在后台,您只关心浏览器显示加载提示吗?