我们最近启动了渐进式Web应用程序,但是在发布PWA更新时遇到了问题。当我们推送该应用程序的新版本时,大多数发行版js文件都会被重命名。
例如名为“ 1.ChunkName。 abc .js”的文件可能会变成“ 1.ChunkName。 def .js”。
因此,在我们发送更新之前加载PWA的所有用户将使用较旧的版本,该版本仍在寻找旧的已删除文件,这破坏了PWA的大部分功能。如果用户刷新页面,此问题已得到解决,但是很明显,我们不能期望用户遇到错误时刷新页面。
我看到的一些解决方案是:
但是我觉得所有这些都有主要的缺点。
那么,如果在使用PWA的过程中推出更新,我如何确保用户拥有无缝的体验?
答案 0 :(得分:1)
我使用的解决方案是仅存储文件名的公用部分,例如1.Chunkname
而不是1.ChunkName.abc.js
。
因此,当您从缓存中获取它们时,可以将第一部分与正则表达式进行比较,并且当缓存不可用时,仅回退到完整的event.request.url
网络响应。
将所有版本的内容存储在缓存中绝对不是一个好策略。上面的典型用法是当图像大小不同(后缀为'-16_16','-32_32')时,您将不会缓存所有图像。而是只存储一个不带后缀的。