0

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

据我了解

  1. 用户登陆example.com
  2. service worker 注册为example.com
  3. abc.example.comxyz.example.com会发生什么?

应该如何缓存所有子域的 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"
      }
    }
  ]
}
4

1 回答 1

0

Service Worker 将每个域和子域视为一个独特的应用程序并且来源不同。因此,您要使用的每个子域都需要单独的服务工作者。这是一篇不错的文章,讨论了您拥有的各种选项。

如果您认为您可以将子域映射到单个域以及使用别名(例如 abc.example.com 到 example.com/abc/),您可以只使用一名服务人员管理您的应用程序。

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

于 2018-05-24T15:36:36.747 回答