缓存优先服务工作者:如何绕过更新资产上的缓存?

bca*_*lla 6 service-worker

这是场景:

您有一个当前通过SW缓存的网站.您部署的新版本包含具有缓存清除版本的更新SW.该公司随后宣布了新功能.然而,人们访问该网站,即使SW破坏了它仍然提供以前的缓存,同时在后台更新其缓存.因此,为新功能而来的访问者看不到它们.

这是ServiceWorkers的预期体验吗?有什么建议的策略来解决这个问题?

Jef*_*ick 10

每当您使用缓存优先策略提供资源时,这是预期的行为,是的.

有两种选择:

  • 不要使用缓存优先策略.不幸的是,如果您使用网络优先策略,您将失去服务工作者的大部分性能优势.如果你能提供帮助,我不建议你先去网络.
  • 采用UX模式,在屏幕上显示"重新加载最新更新"的Toast消息,让用户知道缓存的内容已刷新,并允许他们采取措施查看最新内容.我认为这是最好的方法.如果您正在使用服务工作程序,只要您的缓存内容发生更改(例如,生成的内容更改sw-precache),就会更新,那么您可以通过侦听特定服务工作者控制器事件来检测这些更新,并使用这些事件来触发消息.(这是一个例子.)