让 Angular Service Worker 只为 Angular 个文件工作

Let the Angular Service Worker work only for Angular files

我有一个 Angular 8 应用程序与另一个应用程序一起工作(旧版本的应用程序。我一直在开发新版本,他们应该继续一起工作)。我知道 Angular 有路径前缀 ['/path1', '/path2', '/path3']。 api 或旧版本应用程序的所有其他使用路径(例如,['/api/*', '/*'])。

我想使用 Service Worker,Service Worker 只缓存 Angular 个文件。

Angular 路径示例:

申请途径:

以及所有Angular源文件:

其他路径示例:

我知道,它很复杂,但我只能更改 Angular 应用程序。

我最后用了这个 ngsw.config.json 但它也不起作用。

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js",
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**"
        ]
      }
    }
  ],
  "dataGroups": [
    {
      "name": "oldApp",
      "urls": [
        "/oldApp/**",
        "/**"
      ],
      "cacheConfig": {
        "max-size": 0,
        "maxAge": "0u",
        "strategy": "freshness"
      }
    },
    {
      "name": "api",
      "urls": [
        "/api/**"
      ],
      "cacheConfig": {
        "max-size": 0,
        "maxAge": "0u",
        "strategy": "freshness"
      }
    }
  ]
}

抱歉我的英语不好。

我编写了自己的服务工作者脚本。首先,我在编译后写了脚本运行。该脚本读取所有已编译的文件名并创建新的 service worker js 文件。其次,我在Angular里面写了RegisterSWServiceRegisterSWService编译后创建的注册文件