javascript - 等待窗口加载事件注册服务 worker

标签 javascript service-worker progressive-web-apps workbox

我在 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/

相关文章:

javascript - <select> 标签的选择器轮在 React-JS PWA 的 iphone ios 15 中不显示

javascript - Angular 在提供者中注入(inject) $rootScope

javascript - 在 service worker 的 fetch 事件中使用字符串创建 HTML 响应

javascript - 我们如何将脚本包含到 Service Worker 中?

manifest - 添加到主屏幕在 Beforeinstallprompt 事件触发后不提示

android - 删除 PWA 初始屏幕中的名称

javascript - 为什么 iPad 上的 YouTube 搜索结果与 PC 上的搜索结果不同?

javascript - 在 Axios 调用后设置状态后无法让 React 组件更新

javascript - 注销后处理浏览器的后退和下一步按钮 Python

caching - 当服务器关闭时,Service Worker 抛出 Uncaught Error