3
|
Adam Rackis · 技术社区 · 6 年前 |
![]() |
1
19
作为背景,我建议你阅读 The Service Worker Lifecycle ". 它是从一般服务工作者的角度编写的,但这些要点也适用于以Workbox为动力的服务工作者。
Workbox使用
如果
有一个
few risks
使用
让我们假设一个场景,在该场景中,首先加载HTML缓存(通常是一种最佳实践),然后在加载之后的某个时间,检测到服务工作器更新。 风险1:延迟加载指纹内容现代web应用程序通常结合两种技术:仅在需要时异步延迟加载资源(例如,在单页应用程序中切换到新视图)和添加指纹(散列)以根据包含的内容唯一标识url。 传统上,要么是HTML本身(要么是一些JavaScript,它包含在页面生命周期早期加载的路由信息),它包含对需要延迟加载的url的当前列表的引用。
假设最初加载的web应用的版本(在服务工作者更新之前)认为
如果
如果
注意:虽然使用服务工作者可能会使它更容易遇到此类问题,但这是所有延迟加载版本化url的web应用程序的问题。您应该始终进行错误处理,以检测延迟加载失败并尝试通过强制重新加载页面等方式进行恢复。如果您已经准备好了恢复逻辑,并且您对该UX很满意,那么您可以选择启用
风险2:延迟加载不兼容逻辑
这与第一个风险类似,但当您的url中没有散列指纹时,它适用。如果部署到HTML的更新和对其中一个视图的相应更新,则现有客户端可以结束加载
如果
注意:和以前一样,这并不是服务工作者独有的风险动态加载未经版本化的url的任何web应用可能在最近的部署之后加载不兼容的逻辑。
启用通常比
我会把你介绍给 section 在“服务工作者生命周期”文档中获取更多信息。 |
|
jrob · 首页加载没有最新数据(Nuxt 2 SSR+PWA) 2 年前 |
![]() |
Boopathi kumar · React JS路由不工作 7 年前 |
![]() |
Solar · 如何使用Workbox PWA。php文件 7 年前 |
![]() |
Mathias26 · Javascript服务工作者通知超时 7 年前 |
![]() |
pate · 预缓存根url(“/”)的正确方法 7 年前 |
![]() |
Niklas · 使用Service Worker缓存/优化字体 7 年前 |
|
Kaarug · 使用服务工作者缓存文件时显示进度 7 年前 |