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

Mohd Yasin |

阅读许多教程之后,我创建了该教程,该教程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()为负载或服务工作者性能产生任何影响?

杰夫·波斯尼克

从性能角度来看没有影响。

双方self.skipWaiting()self.clients.claim()采取一些行动,并在同一时间,立即与解决工作undefined值。

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

这两种方法返回的实际诺言都是无关紧要的,并且您不必将它们包装起来event.waitUntil()(尽管这没有什么坏处,并且许多使用服务工作者的例子仍在这样做)。

此外,由于您的代码仅在installactivate侦听器内部调用这些方法,因此有问题的代码甚至在服务工作者线程启动的大部分时间甚至都不会执行-仅当有更新的服务工作者时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

self.Clients.claim()的用途是什么

延迟加载或预加载Angular模块并使用服务工作者来缓存结果?

访问任何站点的服务工作者上下文/世界/执行环境以通过浏览器插件代理 self.registration.showNotification?

服务工作者未在实时(https)服务器上加载

服务工作者,AWS CloudFront和允许访问控制的来源

服务工作者和客户端请求“缓存控制”:“无缓存”

如何安装带有单个Javascript标记的服务工作者和清单?

服务工作者和软件预缓存的“新版本可用”

持久服务工作者和缓存 HTML 和 PNG 文件

如果服务工作者可用,Polymer 2.x会显示吐司

如何在其他所有请求之前加载服务工作者?

服务工作者缓存文件但不离线加载

服务工作者无法加载资源:net :: ERR_INTERNET_DISCONNECTED

服务工作者在第一次加载时获取事件

服务工作者android无法加载资源:net :: ERR_INSECURE_RESPONSE

服务工作者(或类似人员)内部的长时间运行的流程

服务工作者中是否可能发生自定义事件?

在服务工作者中添加图像和CSS文件以及HTML文件以进行离线缓存

`pushManager.subscribe`和`pushManager.getSubscription`服务工作者之间有什么区别

即使在加载新版本的应用后,服务工作者仍可能显示旧版本的应用程序?

带有ReactJS和Webpack的Firebase FCM无法正常工作:我们无法注册默认服务工作者

在服务工作者文件中使用ESM(导入/导出)

需要有关在域中使用多服务工作者的信息

服务工作者和其他域(aws s3)的缓存图像:“将不缓存不透明的响应”

服务工作者(Workbox)不会在重新加载时将路由委派给我们的SPA

服务工作者缓存与 VuexPersistence

如何卸载服务工作者?

notificationclick事件服务工作者

服务工作者中的XMLHttpRequest