服务工作者如何使用子域?

时间:2018-05-24 10:34:55

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

我正在使用Angular 6和ngsw-config.json进行服务工作者配置,但我不知道它如何与子域一起工作。

从我的理解

  1. 用户登陆 example.com
  2. 服务工作者已注册 example.com
  3. abc.example.com xyz.example.com 会发生什么?
  4. 应该如何缓存所有子域的assetsGroups和dataGroups?

    这是我当前的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/**"
          ]
        }
      },{
        "name": "fonts",
        "resources": {
          "urls": [
            "https://fonts.googleapis.com/**",
            "https://fonts.gstatic.com/**"
          ]
        }
      }],
      "dataGroups": [
        {
          "name": "database",
          "urls": [
            "https://**.api.example.com/pl/**",
            "https://**.api.example.com/en/**"
          ],
          "cacheConfig": {
            "maxSize": 100000000,
            "maxAge": "3d",
            "timeout": "2m"
          }
        }
      ]
    }
    

1 个答案:

答案 0 :(得分:0)

服务工作者将每个域和子域视为一个独特的应用程序和不同的来源。因此,您要使用的每个子域都需要单独的服务工作者。 Here is a nice article讨论了您拥有的各种选项。

如果您认为可以将子域映射到单个域以及别名(例如abc.example.com到example.com/abc/),则可以使用一个服务工作者来管理您的应用。

但是,当这不是一个选项时,拥有多个服务工作者并在适当的时候预先缓存将是理想的替代方案。