首页 > 解决方案 > Workbox 预缓存策略

问题描述

从这里,我发现:

当用户稍后重新访问您的 Web 应用程序并且您有一个具有不同预缓存资产的新服务工作者时,workbox-precaching 将查看新列表并确定哪些资产是全新的......

为了确定新的 service worker 是否可用,您必须加载.js 包(比如说,使用 create-react-app 内置捆绑器创建),这意味着客户端必须加载 .js 包。 js 文件以确保不存在新的 serviceWorker。

这意味着,缓存 .js 文件没有多大意义。我对么?

在此先感谢您的时间!

标签: workbox

解决方案


每次导航到先前注册的 service worker 范围内的 URL 后,浏览器都会执行更新检查。这需要下载已注册的服务工作者脚本文件(绕过 HTTP 缓存,确保响应直接来自网络),并将服务工作者脚本文件的新副本与之前安装的副本进行比较。

如果之前安装的和新下载的 service worker 脚本文件的副本相同,则不会发生其他任何事情。当用户返回您的站点并且您没有部署任何新内容时,通常会发生这种情况。在这种情况下,唯一被传输的是服务工作者脚本文件。已添加到 service worker 缓存的各种资源不会再次下载。

如果之前安装的和新下载的 Service Worker 脚本副本之间存在差异,则启动 Service Worker 更新流程。在更新过程中,workbox-precaching负责将位于新下载的服务工作者脚本中的预缓存清单与已经在缓存中的响应进行比较。如果已经缓存的响应有任何更新——或者是因为revision与现有 URL 之一相关联的内容发生了变化,或者因为一个全新的 URL 被添加到最近的清单中——那么workbox-precaching将为您获取并缓存这些清单条目。


推荐阅读