【发布时间】:2020-01-17 15:51:05
【问题描述】:
我有一个内置在 Angular 中的 PWA,它在生产中,并且正在使用 sw-precache 服务工作者。这是在 Angular 拥有 @angular/pwa 包之前。如果我想切换并开始使用 Angular sw,我该怎么做呢?
我需要以编程方式为用户处理这个问题。我认为我需要获取已注册的 SW,检查旧 SW 的名称,取消注册(清除缓存?),然后注册新的。就这么简单吗?我觉得服务人员和处理缓存会有一些问题。然而,我还没有找到这个过程的实际例子。
任何代码示例将不胜感激。谢谢!
【问题讨论】:
-
如果你只是从 index.html 中删除旧的清单引用并运行
ng add @angular/pwa来添加一个新的,这还不够吗(让应用程序使用新的)? -
我的用例是在已经上线的生产状态下处理这个问题,其中用户已经有一个正在运行的带有缓存的软件。您的建议可能适用于本地开发环境或新用户,但对于当前最终用户,更改清单并不会删除这些用户在其浏览器上已经拥有的正在运行的软件。
-
默认情况下,Angular CLI 不会将 service worker 添加到开发环境中,尽管我认为不会有区别(您可以在 http 服务器中启动应用程序并在本地测试它)。我要说的是,如果您的 index.html 指向一个新的工作人员,那么您的应用程序应该使用该工作人员。而老工人,会留下来,但不会被使用。只是在这里大声思考
标签: angular service-worker progressive-web-apps angular-service-worker