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

时间:2017-04-26 17:07:50

标签: service-worker

以下是该方案:

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

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

1 个答案:

答案 0 :(得分:9)

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

有两种选择:

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