5

我正在尝试使服务人员与 API 请求进行角度工作。我希望该应用程序可以离线工作,并且我有以下配置:

    {
        "name": "api",
        "urls": ["https://x.com/**"],
        "cacheConfig": {
            "strategy": "performance",
            "maxSize": 20,
            "maxAge": "365d",
            "timeout": "5s"
        }
    }

这是我离线时 xhr 选项卡的样子:

在此处输入图像描述

这是用户请求的内容:

在此处输入图像描述

如您所见,用户的 API 调用无法解析。

这是user在线时的响应:

在此处输入图像描述

4

4 回答 4

6

尝试这个:

  • 转到您的应用程序选项卡 -> 清除存储 -> 清除站点数据。
  • 从此更改您的 DataGroups 数组:

    {
        "name": "api",
        "urls": ["https://x.com/**"],
        "cacheConfig": {
            "strategy": "performance",
            "maxSize": 20,
            "maxAge": "365d",
            "timeout": "5s"
        }
    }
    

对此:

"dataGroups": [
    {
      "name": "api-performance",
      "urls": [
        "/user" //<=========== I know you want all API calls to be cached, but try this first and see
      ],
      "cacheConfig": {
        "strategy": "performance",
        "maxSize": 100,
        "maxAge": "3d"
      }
    }
  ]
  • 保存并构建您的应用程序PROD
  • 第一次访问该页面。
  • 禁用网络
  • 刷新你的页面
于 2018-01-24T14:40:29.980 回答
0

如果您使用“策略”:“性能”删除超时属性

于 2019-05-14T18:13:33.040 回答
-1

要离线处理 API 数据,您必须使用离线存储(即在初始 API 调用后将数据存储在 Web 浏览器中),最近我在我的应用程序中使用了 Local Forage。找到以下链接:

https://github.com/Alorel/ngforage#types-and-polyfills

https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/offline-for-pwa

于 2018-01-24T10:18:17.463 回答
-3
"dataGroups": [
    {

        "name": "TestApi",
        "urls": [
            "https://api.chucknorris.io/jokes/random",
            "https://localhost:4377/api/home/getNames/"
        ],
        "cacheConfig": {
            "strategy": "freshness",
            "maxSize": 20,
            "maxAge": "1h",
            "timeout": "5s"
        }
    },
    {
        "name": "TestAPI",
        "urls": [
            "https://localhost:4377/api/test/getList",
            "https://localhost:4377/api/template/start/"
        ],
        "cacheConfig": {
            "strategy": "performance",
            "maxSize": 20,
            "maxAge": "2h",
            "timeout": "5s"
        }
    }
]
于 2020-03-06T20:29:52.037 回答