angular - PWA service-worker 无法在没有刷新页面或 F5 的情况下更新
问题描述
下午好,我有一个 PWA 应用程序需要更新。当我进入 PWA 或执行 F5 时,它可以正常工作。但问题是其中一个 PWA 屏幕是一个仪表板,客户端可能会在其中数天(因此它不会执行 F5)并且应该在没有 F5 的情况下进行更新。我正在使用 setInterval () 进行测试,但在 F5 完成之前它不会捕获更新。
代码运行(我每 5 秒看到一次 console.log),但直到我执行 F5 才找到更新
我的应用程序组件:
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)
}
解决方案
我认为这就是它应该发生的方式。这样看,服务工作者(和您的应用程序)正在浏览器中运行。
当您部署应用程序更新时,该应用程序更新会到达托管服务器,如果您的应用程序不与托管服务器通信,它就不会知道有可用的更新。
我一直认为SwUpdate
observable 更像是一种“绕过缓存”的更新,当您刷新时,它会获取更新,并独立于缓存中的数据加载新版本。
推荐阅读
- microservices - 如何在nestjs kafka消费者选项中设置自动重置偏移值
- python - 使用 Python 脚本的 ADF 管道中的 Azure 函数
- javascript - 将对象重塑为另一个对象
- python - 在二进制文件中读取 Nul 字符
- python - 在 Python 中创建和管理并发期货之间依赖关系的正确方法
- r - 如何将带有列表列表的行的表转换为具有更多行和更多列的data.frame?
- javascript - 如何从 JS Navigator 对象中了解设备类型?
- java - 如何在 Tomcat 8.5 web.xml 中添加 Cache-Control、Pragma 和 expires?
- php - 带索引的 MongoDB 性能查询
- jboss7.x - jboss eap 7 - WFLYCTL0030