javascript - 关闭选项卡时 JS ServiceWorker 会发生什么

标签 javascript

当您关闭所有正在执行 web worker 的选项卡时,worker 将关闭。

Service Worker 会发生同样的事情吗?

最佳答案

这有两个相关方面:

  1. Service worker registration,这是浏览器中保存的记录,表示“对于此 URL,这些事件应由此脚本处理”,以及

  2. Service worker activation,即当您的 worker 代码加载到内存中并处理请求或等待请求时

Service Worker 在浏览器 session 中保持注册 ( spec link )。因此,如果您完全退出浏览器(甚至重新启动计算机),注册仍然存在;如果您转到相关范围 URL 并且它注册要处理的事件发生,则工作人员将被激活。

Service Worker 在需要处理事件时被激活,并可能在没有事件要处理时终止(spec link)。何时以及是否这样做取决于主机环境(浏览器)。如果没有内存压力或类似情况(即使所有使用工作人员范围 URL 的选项卡都已关闭),浏览器可能会保持工作人员处于激活状态,尽管这似乎不太可能;当仍然有至少一个选项卡使用其范围 URL 时,它可能会将其保留在内存中,即使工作人员当前处于空闲状态;或者它可能会在没有任何请求要处理的情况下立即终止工作人员。由主机环境来平衡将 Service Worker 保存在内存中的成本与在再次需要时启动它的成本。

这是一个有用的心智模型,假设主机会非常积极并在不需要它的时候立即终止工作人员,这就是为什么这个答案的前一个版本称他们“非常短暂”。但是,这在任何给定的主机环境中是否确实如此取决于环境及其优化。

关于javascript - 关闭选项卡时 JS ServiceWorker 会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46281337/

相关文章:

javascript - JSF 表单 - 提交 > 关注选定的输入

javascript - 多个背景上的图像

javascript - jssor slider ,如何设置自动播放时每张幻灯片的持续时间?

javascript - 如果以其他语言保存,如何从服务器获取数据?

javascript - Material.io 标签 : where to put the tab content?

php - PHP + JS的模板引擎但是

javascript - 三元运算符中的 Angular 翻译过滤器

javascript - 滚动播放 Html5 视频

javascript - 无法在 onclick 事件 (JS) 上向元素插入函数

javascript - 在 React 组件中渲染或使用 DocumentFragment