Workbox 预缓存策略

Workbox precaching strategy

From here,我想通了:

When a user later revisits your web app and you have a new service worker with different precached assets, workbox-precaching will look at the new list and determine which assets are completely new...

为了弄清楚是否有新的 service worker 可用,您必须加载 .js 包 (比方说,使用 create-react-app built-在 bundler 中),这意味着客户端必须每次 加载 .js 文件,以确保没有新的 serviceWorker 存在。

这意味着缓存 .js 文件没有多大意义。我说得对吗?

提前感谢您的宝贵时间!

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

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

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