【问题标题】:Prevent Angular PWA from updating automatically防止 Angular PWA 自动更新
【发布时间】:2019-01-31 19:21:48
【问题描述】:

对于我最近的启动项目,Angular-PWA 可能是一个不错的选择。但是它的一个很好的功能必须被禁用!

应用程序将包含敏感数据,并且必须在很长一段时间内保持稳定(直到用户明确选择更新)。所以不能自动更新。

The official documentation of Angular's Service-worker 不包含有关此策略的任何想法。

有什么想法吗?

【问题讨论】:

  • 您的代码应该控制对后端的调用以发送和获取数据。如果您能描述您在特定应用中遇到的问题,或许我们可以提供一些建议。
  • @Mathias - 问题并不复杂。你知道,如果我们更新我们的后端文件(index.html 等),那么用户浏览器上的 Angular Service-worker 将(几乎立即)检测到更改并下载新文件。更新的应用程序将在下次启动时启动。 这绝不能发生! 或者,用户应该可以选择手动更新应用程序。就像我们知道的许多其他本机应用程序一样。像 IntelliJ IDEA 等。但不像谷歌浏览器!
  • 另一方面是火狐浏览器。它有两个选项:1。自动安装更新 / 2.检查更新,但让您选择安装它们。 我们的应用必须和第二个一样。
  • @Mathias - 一个场景可以是注册一个 wrapper Service-worker。它必须完成两项工作:1。注册主要的 Service-worker / 2.阻止它获取 最新 ngsw.json 并通过缓存版本提供它(直到用户选择更新)。
  • 当用户更改他们的敏感数据时,您不会将其保存到后端数据库吗?

标签: angular progressive-web-apps auto-update angular-service-worker


【解决方案1】:

Angular 的 Service-worker 尝试检查更新的地方总共有 3 个。首先在一个明确的请求 (OK) 和另外两个(check-updates-on-navigation 和 init post-load (update))是自动的,必须禁用。请参阅下面的补丁(@angular/service-worker v7.1.0):

--- "node_modules/@angular/service-worker/ngsw-worker.js"   1985-10-26 11:45:00.000000000 +0330
+++ "node_modules/@angular/service-worker/ngsw-worker.js"   2019-02-13 23:28:10.828903500 +0330
@@ -1990 +1990 @@
-                    const action = (() => __awaiter$5(this, void 0, void 0, function* () { yield this.checkForUpdate(); }))();
+                    const action = (() => __awaiter$5(this, void 0, void 0, function* () { console.log('WILL_UPDATE_ON_EXPLICIT_MESSAGE'); yield this.checkForUpdate(); }))();
@@ -2101 +2101 @@
-                        yield this.checkForUpdate();
+                        console.log('DISCARDED: check-updates-on-navigation'); //yield this.checkForUpdate();
@@ -2171 +2171 @@
-                        yield this.checkForUpdate();
+                        console.log('DISCARDED: init post-load (update)'); //yield this.checkForUpdate();

但我不会使用这种冒险的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多