窗口.applicationCache更新冻结浏览器-如何减少他们的频率或强迫他们是用户发起的
window.applicationCache updates freeze browser - how to reduce their frequency or force them to be user-initiated
我创建了一个web应用程序,通过applicationCache缓存所有必要的代码和数据以供离线使用。然而,每次应用程序启动时,它都会立即尝试检查更新。这会在相当长的一段时间内阻塞浏览器,即使它找不到任何要更新的内容。这种行为对应用程序是高度破坏性的(难道不应该在后台进行更新吗?)在移动设备上,仅仅检查就需要花费很多时间,如果它发现更新,那么下载需要多长时间(b/c它必须重新下载所有文件)——这也会冻结浏览器。 所以,我想知道: 好吧,我已经玩了头,没有什么帮助。我开始悬赏了。如果你能帮忙,请帮忙!是否有一种方法可以将applicationCache更新委托给共享的Web Worker?或
编辑:也许在清单文件上精心构建的缓存控制头是答案?我会调查这个,但我希望有人能给我更多的信息,这些更新。谢谢。
更新
我一直在做一些阅读,并发现这篇文章似乎是一个更优雅的解决方案,如果用户已经在缓存页面-
http://www.html5rocks.com/tutorials/appcache/beginner/toc-updating-cache
至于舱单最新检查所涉及的加载时间,这不是我遇到过的问题。我的理解是它发生在后台,你只是关心浏览器显示加载提示吗?
abort()方法可能是答案…总有一天,但我还没有遇到任何浏览器实现它。
我也遇到过类似的问题,并尝试了所有方法,包括将清单放入自身内部以查看它是否会缓存自己的疯狂想法。所以我可以用ajax请求和eval javascript填充到localStorage手动更新。
最后,我用一个简单的清单创建了一个非常简单的html页面。当我测试它时,UI没有锁定。慢慢地,我开始向页面中添加一些东西,并摆弄清单内容,看看在applicationCache检查期间,哪些东西可能会导致页面冻结。当我在页面中添加了一张图像,但却没有将其显示在清单中时,我终于遇到了失败——这时UI又开始锁定。我回到了原来的项目,发现了一些需要在清单中的图像,并且也修复了锁定UI的问题。
applicationCache 的检查阶段尝试是异步的(至少在我测试过的设备上)。但是,如果清单中缺少文件,则必须等待applicationCache完成对的检查。
似乎当浏览器需要一个没有被缓存的文件时,它等待applicationCache完成更新,然后才会对该文件发出请求——这是有意义的,因为其他资源可能依赖于丢失的文件。这对渲染起到了抑制作用,并使UI冻结。如果清单不可达(例如在不同的网络上),UI可以锁定大约一分钟。
要找到需要添加到清单中的文件,请在刷新应用程序几次时查看服务器日志。
- 他们是如何使用angular/jqLite find()方法按属性名称和值选择元素的?ng conf 2015
- 他们是如何在这个页面上隐藏JavaScript的
- 功能检测(不是用户代理嗅探)以执行浏览器检测
- FB登录API - 检查用户是否实际上是用户
- 如何在Javascript中获取当前日期,月份和年份,而不是用户PC的日期,月份和年份
- 如何组合两个 javascript 以包含服务器时间而不是用户时间的 ajax 调用
- 设置变量而不是用户输入
- 如何在 JS 中比较两个日期?一个是用户选择的,一个是当前日期
- BBC滑块即使javascript关闭也能工作,他们是如何做到的
- fs.link和fs.symlink之间有什么区别?他们是独立于平台的吗
- 如何知道如果;单击'事件实际上是用户试图突出显示某些文本
- 他们是如何创建新的Foxy Bingo网站的
- 如何从VB代码后面调用ASP链接,而不是用户单击链接
- Javascript中的回调真的是方法调用吗?如果是的话,他们是怎么回事'级联'
- 是用户输入的带有Javascript的HTML显示给其他人,而不是HTML转义的XSS示例
- 他们是如何在http://artofflightmovie.com/.
- 我应该从哪里开始呢,模特在那里,但是…他们是# 39;t
- 我如何使多个选择显示在屏幕上与他们的用户输入
- 我想直接用户到网页,如果他们是在桌面或移动操作系统
- 窗口.applicationCache更新冻结浏览器-如何减少他们的频率或强迫他们是用户发起的