要在安装服务工作者后立即激活它,我在安装监听器中使用self.skipWaiting()
。要立即控制页面(不需要页面导航,例如页面加载),我使用self.clients.claim()
。我明白做这些事情意味着:
网上有各种关于做这些事情的警告,但我没有看到陷阱。也许一个潜在的问题是,如果受控页面在首次加载时与服务工作者进行一些初始握手或设置。当新的服务工作者在后台激活时,这显然会被遗漏,但即便如此,服务工作者也可以通过其控制页面通知他们这一变化。
在我看来,对于大多数情况下的大多数应用程序而言,通过同时使用self.skipWaiting()
和self.clients.claim()
而不会有任何缺点会大大受益。我错过了什么吗?
答案 0 :(得分:0)
self.skipWaiting()
的陷阱在这里描述得非常好(感谢@RobertRowntree的链接):
https://redfin.engineering/how-to-fix-the-refresh-button-when-using-service-workers-a8e27af6df68
至于self.clients.claim()
,我仍然没有看到一个引人注目的论据反对它,但当我这样做时,我会更新我的答案。