下午好,我有一个带有活动service-worker的PWA应用程序要更新。当我进入PWA或做F5时,它可以正常工作。但问题是其中一个PWA屏幕是一个仪表板,客户端可以在其中呆上几天(因此它不会做F5),它应该在没有F5的情况下更新。我正在测试setInterval(),但它不会捕获更新,直到F5完成。
代码运行(我每5秒看到一次console.log),但是直到我执行F5
才找到更新。我app.component:
initializeApp() {
setInterval(() => {
console.log("cheking updates")
if (this.swUpdate.available) {
this.swUpdate.available.subscribe(() => {
if (confirm("a new version si available."))
window.location.reload();
});
}
}, 5000)
}
我认为这是应该发生的。这样来看,service worker (和你的应用)在浏览器中运行。
当你部署一个应用程序更新时,该应用程序更新会访问主机服务器,如果你的应用程序不与主机服务器通信,它将不知道有一个可用的更新。
我一直认为SwUpdate
更像是一种"缓存绕过"的更新,当你刷新时,它会选择更新,并独立于你在缓存中的数据加载新版本。