多个前端应用程序在文件中实现签名模板以控制缓存,以及签名更改的文件中的每个更改。 如何让Service Worker处理这些签名和缓存?
签名示例:
我正在开发一个已经准备好的应用程序,尝试实现服务工作者以使某些功能可以脱机使用。
示例,在本节中我需要说明我将要缓存的内容,但是,应用程序会更改文件的签名以控制缓存。 (今天是这样的)
caches.open('my-cache').then(function(cache) {
return cache.addAll([
'/index.html',
'/styles.css',
'/main.js'
]);})
应用程序总是将“styles.css”更改为“styles.css?V = 1527624807103_1”(时间戳)据我所知,“styles.css”与“styles.css”不同?V = 1527624807103_1 ”
答案 0 :(得分:0)
您不应对用于实际顶级服务工作文件的URL进行版本控制或添加signture参数。如“The Service Worker Lifecycle”中所述:
它会让你遇到这样的问题:
- index.html将sw-v1.js注册为服务工作者。
- sw-v1.js缓存并提供index.html,因此它首先脱机工作。
- 您更新index.html,以便注册新的闪亮的sw-v2.js。
醇>如果您执行上述操作,则用户永远不会获得
sw-v2.js
,因为sw-v1.js
从其缓存中提供旧版本的index.html。 你已经把自己置于需要更新你的位置 服务工作者,以便更新您的服务人员。
对于服务工作者文件中包含的实际URL(可能合法地包含版本/散列/签名),最好的办法是使用与构建过程集成的工具,并生成基于URL的列表在每个应该预先缓存的文件的最新版本上。
Workbox就是这样一个工具,还有其他工具,例如sw-precache
(Workbox的前身)和offline-plugin
。