让Angular Service Worker仅适用于Angular文件

时间:2019-10-10 07:57:26

标签: angular service-worker angular-service-worker

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

我想使用Service Worker,并且Service Worker只是缓存Angular文件。

角路径示例:

申请路线:

  • /path1/*
  • /path2/*
  • /path3/*

以及所有Angular源文件:

  • /index.html
  • /main.(_hash_).js
  • /common.(_hash_).js
  • /polyfills.(_hash_).js
  • ... *(all prod compiled angular files)*
  • /assets/*

其他路径示例:

  • /oldApp =>(对于旧版本,返回index.html)
  • /* =>(使用旧版本应用程序的所有文件和api)
  • /api/* =>(对于Angular API)

我知道,它很复杂,但是我只能更改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"
      }
    }
  ]
}

对不起,我的英语不好。

1 个答案:

答案 0 :(得分:0)

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

相关问题