- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Workbox 来预缓存渲染应用程序 shell 所需的 Assets ,包括 index.html
的基本版本. Workbox 假设 index.html
在缓存中可用,否则页面导航失败,因为我在我的 Service Worker 中注册了它:
workbox.routing.registerNavigationRoute('/index.html');
self.skipWaiting()
安装监听器中的说明:
self.addEventListener('install', e => {
self.skipWaiting();
});
install
现在的听众:
self.skipWaiting()
可以吗?在 Workbox 的安装监听器失败时成功?这将导致出现问题状态,即 Assets 未预先缓存但 Service Worker 已激活。这种情况是否可能发生,我应该防范吗?
最佳答案
我强烈推荐“The Service Worker Lifecycle”作为有关 Service Worker 安装和更新不同阶段的权威信息来源。
总结该文章中的一些信息,因为它适用于您的问题:
installing
相,不管多install
您已注册的听众,他们都将有机会执行。正如您所建议的,Workbox 创建了自己的 install
监听器来处理预缓存。 install
监听器完成且没有错误,Service Worker 将进入下一阶段,这可能是 waiting
(如果已经有一个使用以前版本的 service worker 的开放客户端)或 activating
(如果没有客户端使用以前版本的 Service Worker)。 skipWaiting()
,如果你选择使用它,它会绕过waiting
无论是否有任何打开的客户端使用先前版本的 Service Worker。 skipWaiting()
如果出现任何 install
将不会完成任何事情监听器失败,因为 Service Worker 永远不会离开 installing
阶段。这基本上是一个无操作。 skipWaiting()
当您还使用版本化、预缓存 Assets 的延迟加载时。正如文章警告的那样:
Caution:
skipWaiting()
means that your new service worker is likely controlling pages that were loaded with an older version. This means some of your page's fetches will have been handled by your old service worker, but your new service worker will be handling subsequent fetches. If this might break things, don't useskipWaiting()
.
skipWaiting()
默认为您。您可以选择是否使用它。
关于caching - Workbox:self.skipWaiting() 的危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49482680/
我正在开发一个 pwa(带有类星体的 vue 应用程序),我真的很困惑,因为按照指示包含选项会导致我的服务 worker workbox.core.skipWaiting() 中的指令导致Servic
我使用 Workbox 来预缓存渲染应用程序 shell 所需的 Assets ,包括 index.html 的基本版本. Workbox 假设 index.html在缓存中可用,否则页面导航失败,因
描述: 我们使用 sw precache 来预先缓存脚本,因此为了更新脚本,我们提供了重新加载选项,为此,我们正在监听工作人员消息,以跳过等待新安装的服务工作人员,原因未知,我们没有得到正确的信息 导
我试图了解 skipWaiting 之间的区别和 clientsClaim .据我了解:调用 skipWaiting将导致新的 Service Worker 跳过等待阶段,并立即变为事件状态。 cli
我已经实现了 Workbox 以使用 webpack 生成我的服务 worker 。这有效 - 我可以确认在运行 "generate-sw": "workbox inject:manifest" 时生
我有一个服务人员。这是安装事件: self.addEventListener('install', function (event) { console.log('Installing Ser
默认 skipWaiting在 Workbox 中设置为 false。假设您仅使用 Workbox 创建的 service worker 进行缓存,将其设置为 true 有什么缺点吗?如果不这样做,您
要在安装后立即激活 service worker,我使用 self.skipWaiting()在安装监听器中。要立即控制页面(无需页面导航,例如页面加载),我使用 self.clients.claim
在阅读了很多教程后,我发现 self.skipWaiting() 用于立即对现有 serviceWorker 应用更新,而 self.clients.claim()用于在第一次加载时立即进行控制。 s
我是一名优秀的程序员,十分优秀!