除非我删除cookie /缓存,否则更改不会反映在service-worker中

Rav*_*krn 3 service-worker

我正在使用服务工作者来实现Web推送通知.每当我更改一些service-worker代码时,除非我删除cookie/cache,否则该更改不会反映在浏览器上的service-worker中.这是正常的行为还是我必须添加一些功能来更新服务工作者?

Mat*_*unt 5

如果缓存标头随服务工作文件一起发送,则服务工作文件的缓存最长为24小时.

第一步是将缓存标头设置为0以不缓存.

当浏览器找到新的服务工作者时,它将下载并安装它.在服务工作者当前控制的所有页面都关闭之前,它不会生效.对于普通用户来说,这不是问题.在chrome开发过程中,您可以使用Ctrl + shift + R进行硬刷新,这会强制页面不被服务工作者控制,从而允许您的服务工作者在下次刷新时控制.

最终选项是在安装步骤中使用跳过等待,并在激活步骤中声明强制新服务工作者立即激活和控制任何页面.如果因为这很容易进入奇怪的场景而获利.

更新:浏览器正在更改此默认行为 - Firefox现在将忽略缓存标头,而其他浏览器可能会实现相同的行为