缓存优先 Service Worker:如何绕过更新资产的缓存?

2023-12-23

这是场景:

您有一个当前通过软件缓存的站点。您部署一个新版本,其中包含带有缓存清除版本的更新软件。然后该公司宣布了新功能。然而,人们访问该站点时,即使软件崩溃,它仍然会提供以前的缓存,同时在后台更新其缓存。因此,前来寻求新功能的访问者看不到它们。

这是 ServiceWorkers 的预期体验吗?解决这个问题的推荐策略是什么?


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

有两种选择:

  • 不要使用缓存优先 https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network战略。不幸的是,如果您使用 Service Worker,您将失去 Service Worker 的大部分性能优势网络优先 https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache战略。如果可以的话,我不建议您选择网络优先。
  • 采用在屏幕上显示“重新加载最新更新”消息的 UX 模式,让用户知道缓存的内容已刷新,并允许他们采取操作以查看最新内容。我认为这是最好的方法。如果您使用的是 Service Worker,只要您的缓存内容发生更改(例如,由sw-precache https://github.com/GoogleChrome/sw-precache),然后您可以通过侦听特定服务工作线程控制器事件来检测这些更新,并使用这些事件来触发消息。 (这里是一个例子 https://github.com/GoogleChrome/sw-precache/blob/master/demo/app/js/service-worker-registration.js#L31.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缓存优先 Service Worker:如何绕过更新资产的缓存? 的相关文章

随机推荐