等待窗口加载事件来注册服务工作者

Est*_*ask 8 javascript service-worker progressive-web-apps workbox

我偶然发现了Google Workbox文档中的这个代码段:

<script>
// Check that service workers are registered
if ('serviceWorker' in navigator) {
  // Use the window load event to keep the page load performant
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/sw.js');
  });
}
</script>
Run Code Online (Sandbox Code Playgroud)

没有窗口load事件处理程序,页面加载如何变得不那么高效?

服务工作者是否应该尽早联系起来,因为PWA的主要用途之一就是缓存?

abr*_*ham 5

服务工作者在主线程的后台加载,但是他们仍然消耗计算机资源和网络资源(如果预先缓存)。如果当前渲染页面需要500KB渲染时间,并且您要预缓存该页面以完全脱机工作,则服务工作者还必须下载该500KB。这与要渲染的当前页面竞争,因此建议延迟注册服务工作者,直到为用户准备好当前页面为止。

您可以阅读有关在Web基础知识上注册服务工作者的更多信息。