要在安装后立即激活 service worker,我使用 self.skipWaiting()
在安装监听器中。要立即控制页面(无需页面导航,例如页面加载),我使用 self.clients.claim()
.我明白做这样的事情意味着:
网上有各种各样的警告关于做这样的事情,但我没有看到陷阱。也许一个潜在的问题是受控页面在首次加载时是否与 Service Worker 进行了一些初始握手或设置。当新的 Service Worker 在后台激活时,这显然会被忽略,但即便如此,Service Worker 也可以向其控制页面发送消息以通知它们更改。
在我看来,对于大多数情况下的大多数应用程序,同时使用
self.skipWaiting()
会显着受益。和 self.clients.claim()
没有任何缺点。我错过了什么?
最佳答案
self.skipWaiting()
的陷阱在这里描述得非常好(感谢@RobertRowntree 提供链接):
https://redfin.engineering/how-to-fix-the-refresh-button-when-using-service-workers-a8e27af6df68
至于self.clients.claim()
,我仍然没有看到反对它的令人信服的论据,但是当我看到时,我会更新我的答案。
关于service-worker - 服务 worker : pitfalls of self. skipWaiting() 和 self.clients.claim(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49482577/