angular - Angular PWA ngsw-config updateMode——什么时候更新用户的 PWA?
问题描述
我们最近使用 Ionic + Angular PWA 部署了一个生产应用程序。不幸的是,我们没有为资产 *.js 和 *.html 设置更新模式。我们已经部署了新版本的 ngsw-config 和 ngsw.json,其中包括更新资产的方法。
如果用户已经在他们的手机上安装了我们的应用程序(即主屏幕上的快捷方式)-> 他们的 ngsw-config 或 ngsw.json 需要多长时间才能更新?
会自动更新吗?
解决方案
根据https://angular.io/guide/service-worker-devops#update-checks:
每次用户打开或刷新应用程序时,Angular Service Worker 都会通过查找 ngsw.json 清单的更新来检查应用程序的更新。如果找到更新,它会自动下载和缓存,并在下次加载应用程序时提供。
这意味着下一次*您的用户打开应用程序时,他应该获得更新的内容/应用程序,因为ngsw.json
服务器中有一个新版本可用。
旁注:我自己没有尝试过。我唯一不确定的是,ngsw.json
即使您在文件Cache-Control: max-age...
上明确设置了标头,服务人员是否总是获取新ngsw.json
文件。我认为它会因为 Angular 拥有强大的应用程序完整性保证。但是,我建议您事先尝试一下。
*(注意“下次”)如果用户已经“添加到主屏幕”之前的版本,当他再次打开应用程序时,即使现在有新版本可用,浏览器仍会呈现旧应用程序。ngsw.json
这是因为 Service Worker在此期间检查更新并在后台下载更新的版本。如果用户第二次关闭并打开应用程序,那就是实际呈现新版本的时间。我在某处(但我忘记了在哪里)读到“新版本可用,您想刷新”消息可以在新版本可用后用户第一次打开应用程序时显示,但这超出了范围这个问题,我就不深究了。
推荐阅读
- mongodb - 如何在数组中找到数组的最大值?
- mysql - 计算一个字符串表示的json对象的值的总和
- c++ - 对一个数组进行排序并在第二个数组交换 C++ 中具有相应的值
- google-cloud-platform - Google Cloud Run 服务上的 DNS_PROBE_FINISHED_NXDOMAIN 错误
- ruby - 将 ruby 应用程序部署到云代工厂,rubygems 失败
- python - Python——如何在不同命名的函数下添加输入函数
- c# - 我想知道C#中函数和方法的区别
- python - 如何暂停或删除manim中的声音?
- javascript - Java 脚本正则表达式接受多个值,包括 Mountebank 谓词中的空值
- c++ - 在 for 循环中声明变量是否有替代方法?