关闭所有执行web worker的标签时,工作人员将关闭。
服务工作者是否也会遇到同样的事情?
答案 0 :(得分:3)
这有两个相关方面:
服务工作者注册,这是浏览器中保存的记录,说明"对于此URL,这些事件应该由此脚本处理,"以及
服务工作者激活,这是您的工作人员代码加载到内存中并处理请求或等待一个请求
服务工作者在浏览器会话中保持注册(spec link)。因此,如果您完全退出浏览器(甚至重新启动计算机),则注册仍然存在;如果您转到相关的范围URL并且它已注册处理的事件发生,工作人员将被激活。
当需要处理事件时,激活 服务工作者,并且可以在没有事件要处理的时候终止(spec link)。它取决于主机环境(浏览器)何时以及是否这样做。如果没有内存压力或类似情况(即使使用工作人员范围URL的所有选项卡都已关闭),浏览器可能会激活工作人员,尽管这似乎不太可能;即使工作人员当前处于空闲状态,当使用其范围URL仍然至少有一个选项卡时,它可能会保留在内存中;或者它可能会在没有任何处理请求的瞬间终止工作人员。它取决于主机环境,以平衡将服务工作者留在内存中的成本与再次需要时启动它的成本。
这是一个有用的心理模型,假设主机真的具有攻击性,并且在不需要主动的情况下终止工作人员,这就是为什么这个答案的先前版本称之为"非常短暂。"但是,在任何给定的主机环境中,这是否真实,取决于环境及其优化。