安装好ServiceWorker以后SW是不是就永久了?

Once you install ServiceWorker, will SW be permanent in the future?

我编写并部署了一个程序来安装 ServiceWorker。

但是,由于ServiceWorker的存在,服务的整体性能有所下降。

所以,我决定从该服务中删除 ServiceWorker。

我已经用 ServiceWorker 部署了一个服务。除非在程序端明确卸载,否则这个ServiceWorker不会从用户浏览器中移除吗?

或者它会随着时间的推移自动从用户的浏览器中删除已经 运行 ServiceWorker 吗?

另外,如果我必须明确删除它,我应该写下面的代码吗?

navigator.serviceWorker.getRegistrations().then(function(registrations) {
  for(let registration of registrations) {
    registration.unregister()
  }
})

浏览器实现了一个 call-home 例程,在该例程中,它们会在距离上次 24 小时后自动检查 SW 脚本更新。在此检查中,浏览器的 HTTP 缓存被绕过,服务器将查询文件的新版本。所以理论上在足够长的时间内每个客户端都应该自动删除SW。

然而,这个 auto-update 不在最初的 SW 实现中。如果有人使用不支持此功能的旧浏览器或较小的浏览器,那么它可能还不够。因此,我也会使用您提供的注销代码。

两者都用。