缓存优先的 Service Worker:如何在更新后绕过缓存?

6

下面是场景:

你有一个已经通过 SW 进行缓存的网站。你部署了一个包含更新版本的 SW,其中包括一个缓存破坏版本。公司随后宣布了新功能。人们访问该网站,然而,即使 SW 破坏了缓存,它仍然在后台提供先前的缓存,同时更新其缓存。因此,来寻找新功能的访问者看不到它们。

这是 ServiceWorkers 的预期体验吗?有哪些推荐的策略可以解决这个问题?

1个回答

10

如果您选择采用缓存优先的策略来提供资源,则这是预期的行为。

有两种选项:

  • 不使用缓存优先策略。不幸的是,如果您采用网络优先策略,则会失去大部分服务工作者的性能优势。如果可以避免,我不建议采用网络优先。
  • 采用用户体验模式,在屏幕上显示“重新加载以获取最新更新”的消息提示,让用户知道缓存内容已被刷新,然后让他们采取行动查看最新内容。我认为这是最好的方法。如果您正在使用服务工作者,每当您的缓存内容更改时它都会得到更新(例如,由sw-precache生成的工作者),那么您可以通过监听特定的服务工作者控制器事件来检测这些更新,并使用它们来触发消息。(这里是一个例子。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接