我在 Google Workbox documentation 中偶然发现了这个片段:
<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>
如果没有窗口 load
事件处理程序,页面加载究竟是如何变得性能下降的?
Service Worker 尽早连接通常不是更可取的吗,因为它在 PWA 中的主要用途之一是缓存?
最佳答案
Service workers 在后台加载主线程,但它们仍然消耗计算机资源,如果有预缓存,还会消耗网络资源。如果当前渲染页面需要 500KB 来渲染,而你想要预缓存页面以完全脱机工作,则 service worker 还必须下载这 500KB。这与正在呈现的当前页面竞争,因此建议延迟注册服务 worker ,直到当前页面为用户准备好之后。
您可以在 web fundamentals 上阅读有关注册服务 worker 的更多信息.
关于javascript - 等待窗口加载事件注册服务 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53665853/