【发布时间】:2016-12-29 03:19:41
【问题描述】:
我有一个使用 IndexedDB 存储其状态的客户端 JS 应用程序。工作正常。但是,它有点慢,因为我经常读取和写入 IndexedDB,以便在打开多个选项卡时状态不会变得不一致。
我的想法是...将所有数据库访问内容放在一个 Service Worker 中,然后我可以将值缓存在内存中,而不必担心另一个选项卡可能会更改数据库。
这似乎工作正常,除了我的应用程序的某些部分需要很长时间才能运行。我可以将状态(如“X% 完成”)从 Service Worker 传达给我的 UI。但是如果运行超过 30 秒,Firefox 和 Chrome 似乎都会杀死工人,这对我来说太短了。
有没有办法绕过这个限制?如果没有,有什么想法可以实现类似的目标吗?我认为 Shared Worker 可以做到这一点,只是浏览器支持很差,而且我不认为现在随着 Service Worker 的发展势头会有所改善。
【问题讨论】:
-
您是否尝试在值发生更改时更新所有选项卡?
-
有时是,有时不是。
-
您是否尝试过使用
localStorage、storage事件? -
在这种情况下,我需要IndexedDB的特性和性能。
-
SharedWorker不受 ie 支持,但其他 borwsers developer.mozilla.org/en-US/docs/Web/API/SharedWorker 支持。SharedWorker的性能会与ServiceWorker不同吗?
标签: javascript web-worker service-worker