我开发了一个 PWA。我遇到的一个问题是,当发布新版本时,我会增加服务工作者文件 (sw.js) 中的版本号,并且当它运行时,缓存会很好地重新生成。版本号是缓存名称,因此更改应该会触发它在运行时执行的新缓存。
这里的问题是它何时运行。
我的一些客户发现很难“获取”最新版本,因为他们的浏览器不想加载新版本并坚持提供旧版本,直到我指示客户手动清除浏览器缓存并重新加载 Chrome。
在我的项目中,我在一个名为 app.js 的 js 文件中注册了我的 service worker。
可能问题是 sw.js 被导入并在 app.js 文件中注册了以下行:
.register('/public/sw.js')
我的问题是是否可以在 app.js 上使用缓存破坏技术,以便该文件每次都运行,然后,当我在 sw.js 文件中进行更改(由新版本号表示)时不会使用旧缓存,但会创建新缓存。
对于缓存破坏 app.js,我会使用
var versionUpdate = (new Date()).getTime();
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "/js/app.js?v=" + versionUpdate;
document.body.appendChild(script);
对于那些了解 PWA 的人......这会导致任何不利影响吗?
谢谢