将 Service Worker 保存在缓存中是否有意义?

Does it make sense saving a service worker in cache?

从我的 service worker 那里,我在浏览器缓存中保存了一些资产,以及 service worker 脚本本身,它工作正常,所以我可以看到 service worker url 和所有其他我的 devtools 缓存选项卡中的资产。

现在,当我离线时,我的服务工作者会监听 fetch 事件并从缓存中获取所有资产。

但是,当页面尝试注册 worker 本身时,似乎没有获取事件,因此我在控制台中收到以下错误:

console error

console erorr

我错过了什么吗?毕竟,缓存 service-worker 脚本本身有意义吗?

根据 update algorithm 的规范(也就是 运行 用于注册)。 7.2点:

Set request’s skip service worker flag and request’s redirect mode to "error".

这意味着您的 service worker 请求永远不会通过 service worker。而是按照自己的规则缓存在自己的缓存中。您看到的错误是浏览器尝试获取 fresh 版本的 service worker 的失败尝试。

正如 Jeff Posnick 在他的一个回复中所说,您可以安全地忽略这些错误。