为什么在清单中使用固定 url 进行预缓存?

Why Precaching with fixed urls in manifest?

我正在阅读有关 service worker 的预缓存的文章,最后我得到了这个 precaching

我不明白为什么它使用带哈希值的固定网址。每次文件更改时都必须动态创建它们。

那么手动放置它们并将修订设置为空有什么意义呢?

如果您在谈论 Workbox 将文件哈希值标记为 URL 的方式,那么我可以回答这个问题。

哈希是对文件内容的计算。在您更改文件中的任何内容之前,它会保持不变。然后该文件具有不同的哈希值。因此,每次您 运行 生成服务工作者的脚本时,Workbox 都会生成一个清单。

然后在安装 Service Worker 时,它只会获取已更新的网络资产的更新。它还可以进行哈希检查以验证文件是否符合预期。

我在没有清单文件和要维护的构建步骤的情况下完成此操作的另一种方法是向网络资产发出 HEAD 请求。服务器应该 return 一个最后更新的 header 值,您可以检查文件创建时缓存中的值。

我还没有完全完善这项技术,但当我稳定下来后,我可能会写一篇关于该方法的文章。

但最终目标是尽可能多地消除往返,减少服务器和客户端的数据负担。