javascript – 服务工作者(或类似的东西)中长时间运行的过程

我有一个客户端JS应用程序,它使用IndexedDB来存储它的状态.工作正常.但是,由于我经常读取和编写IndexedDB,因此当多个选项卡打开时,状态不会变得不一致,这很慢.

我的想法是将所有数据库访问内容都放在服务工作器中,然后我可以在内存中缓存值,而不用担心另一个选项卡可能会更改数据库.

这似乎工作正常,除了我的应用程序的一些部分需要很长时间才能运行.我可以将服务工作者的状态(例如“X%done”)传达给我的UI.但Firefox和Chrome似乎杀死了这个工作人员,如果它运行了超过30秒,这对我来说太短了.

有没有办法解决这个限制?如果没有,任何想法实现类似的东西?共享的工作者可以做到这一点,除了浏览器支持不好,我不期望现在随着服务工作者的发展势头而改善.

解决方法

关于服务人员的Google文档告诉我们,使用服务工作者作为内存缓存是不可能的:

It’s terminated when not in use,and restarted when it’s next needed,so you cannot rely on global state within a service worker’s onfetch and onmessage handlers. If there is information that you need to persist and reuse across restarts,service workers do have access to the IndexedDB API.

我的建议是继续使用服务工作人员将数据保留到数据库,并使用localStorage创建一个shared cache between pages.进行更改的选项卡然后负责更新localStorage中的缓存,并通过服务工作者持久化到IndexedDB.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)