如何强制用户使用PWA的最新版本?

时间:2018-09-28 13:03:26

标签: vue.js webpack version progressive-web-apps

我们最近启动了渐进式Web应用程序,但是在发布PWA更新时遇到了问题。当我们推送该应用程序的新版本时,大多数发行版js文件都会被重命名。

例如名为“ 1.ChunkName。 abc .js”的文件可能会变成“ 1.ChunkName。 def .js”。

因此,在我们发送更新之前加载PWA的所有用户将使用较旧的版本,该版本仍在寻找旧的已删除文件,这破坏了PWA的大部分功能。如果用户刷新页面,此问题已得到解决,但是很明显,我们不能期望用户遇到错误时刷新页面。

我看到的一些解决方案是:

  1. 请勿删除旧文件,以允许旧版本继续工作。
  2. 使用服务人员检查更新。
  3. 以某种方式使用MQTT / WebSockets来使用户更新到最新版本。

但是我觉得所有这些都有主要的缺点。

那么,如果在使用PWA的过程中推出更新,我如何确保用户拥有无缝的体验?

1 个答案:

答案 0 :(得分:1)

我使用的解决方案是仅存储文件名的公用部分,例如1.Chunkname而不是1.ChunkName.abc.js

因此,当您从缓存中获取它们时,可以将第一部分与正则表达式进行比较,并且当缓存不可用时,仅回退到完整的event.request.url网络响应。

将所有版本的内容存储在缓存中绝对不是一个好策略。上面的典型用法是当图像大小不同(后缀为'-16_16','-32_32')时,您将不会缓存所有图像。而是只存储一个不带后缀的。