在服务工作者中使用self.clients.claim()和self.skipWaiting()可能会增加加载时间?

时间:2017-10-24 13:21:17

标签: caching service-worker workbox

在阅读了许多教程后,我发现self.skipWaiting()用于立即对现有serviceWorker应用更新,self.clients.claim()用于在第一次加载时立即控制。

self.addEventListener('install', function(event) {
    event.waitUntil(self.skipWaiting());
});
self.addEventListener('activate', function(event) {
    event.waitUntil(self.clients.claim());
});

是否在每次请求时查找更新或内部如何工作?使用self.clients.claim()self.skipWaiting()会对负载或服务工作者的性能产生任何影响吗?

1 个答案:

答案 0 :(得分:2)

从绩效角度来看,没有任何影响。

self.skipWaiting()self.clients.claim()都可以通过采取某些操作来工作,同时立即使用undefined值进行解析。

self.skipWaiting()的情况下,所采取的行动实际上只是翻转内部标志并导致服务工作者尝试激活。在self.clients.claim()的情况下,操作是遍历所有客户端并尝试让当前正在执行的服务工作者获得控制权。

这两种方法所返回的实际承诺是无关紧要的,你不必将它们包裹在event.waitUntil()中(尽管它并没有受到伤害,许多例子都是如此)服务人员的使用情况继续如此)。

此外,因为您的代码只调用installactivate侦听器内的那些方法,所以相关代码甚至不会执行服务工作线程的大部分时间只有当有更新的服务工作者时才启动。