更新时间:2024-11-27 GMT+08:00
分享

配置API的响应缓存

您可以通过配置响应缓存策略将后端服务(服务端)返回的应答缓存在API网关中,当客户端发送相同的请求时,网关不用向后端传递请求,直接返回缓存的应答。有效降低后端的负荷,同时减少API调用的延迟。

  • 当使用响应缓存策略时,后端的响应内容会缓存到API网关中,此时API网关不支持缓存数据加密,对于响应中的敏感数据存在安全风险,请谨慎配置策略。
  • 策略参数会明文展示,为防止信息泄露,请谨慎配置。

响应缓存策略原理图如下:

使用限制

  • 响应缓存策略仅支持使用GET、HEAD方法的API。
  • 超过1M的响应体不会被缓存。
  • 用于后端响应内容的缓存大小为128m。
  • API网关遵守后端应答中的Cache-Control头的约定来处理缓存,如果后端不返回Cache-Control头,则默认缓存,使用策略中配置的ttl字段作为缓存超期时间。
  • API网关默认不处理客户端的Cache-Control头,可以通过策略中的client_cache_control来进行配置。
  • Cache-Control拓展缓存指令不是核心HTTP缓存标准文档的一部分,本策略不支持拓展缓存指令。
    Cache-control: immutable 
    Cache-control: stale-while-revalidate=<seconds> 
    Cache-control: stale-if-error=<seconds>
  • API网关仅支持缓存Content-TypeContent-EncodingContent-Language头,如需要缓存更多的Headers,请在策略的“允许缓存的后端响应头”参数处添加,但是无法添加API网关增加的系统响应头(x-apig-*,x-request-id等)。
  • 一个API只能绑定一个相同类型的策略。
  • 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。
  • 策略的绑定、解绑、更新会实时生效,不需要重新发布API。
  • API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。
  • 如果策略与API有绑定关系,则策略无法执行删除操作。

创建响应缓存策略

  1. 进入API网关控制台页面。
  2. 根据实际业务在左侧导航栏上方选择实例。
  1. 在左侧导航栏选择“API管理 > API策略”。
  2. 在“策略管理”页面,单击“创建策略”。
  3. 在“选择策略类型”弹窗中,选择“插件策略 > 响应缓存”。
  4. 在“创建策略”弹窗中,配置策略信息。

    表1 响应缓存参数说明

    参数

    说明

    策略名称

    填写策略的名称,根据业务规划自定义。建议您按照一定的命名规则填写策略名称,方便您快速识别和查找。

    策略类型

    固定为“响应缓存”。

    描述

    填写策略的描述信息。

    策略内容

    策略的配置内容,支持表单配置和脚本配置两种方式。

    响应缓存键

    配置参数作为响应缓存键,用于区分不同的缓存。

    • system_params类型:配置不同的网关内置系统参数作为响应缓存键来区分缓存。配置参数请参考网关内置参数
    • parameters类型:配置不同的请求query参数作为响应缓存键来区分缓存。
    • headers类型:配置不同的请求头作为响应缓存键来区分缓存。

    HTTP参数

    根据HTTP响应码和缓存时长来决定是否缓存,以及缓存的有效时间。

    如果不配置HTTP参数,那么HTTP响应码默认值为200,取值范围:200-599。缓存时长默认值为300s,取值范围:1s~720000s。

    缓存策略模式

    网关通过客户端请求中的Cache-Control请求头来处理缓存,默认拒绝所有客户端带Cache-Control头的请求。

    • all:允许所有客户端带Cache-Control头的请求。
    • off:拒绝所有客户端带Cache-Control头的请求。
    • apps:允许appId(凭据ID)取值在datas列表中的客户端。

    允许缓存的后端响应头

    对于后端的响应Headers,默认仅支持缓存Content-TypeContent-EncodingContent-Language头。如果需要缓存更多的Headers,请在“允许缓存的后端响应头”处添加,但是无法添加API网关增加的系统响应头(x-apig-*,x-request-id等)。

  5. 单击“确定”。

    • 如果您需要复制已创建的策略,请在已创建策略的“操作”列中单击“克隆”配置参数即可。

      克隆策略的名称不能与已创建的策略名称重复。

    • 策略创建后,您还需要为策略绑定API,才能使策略对API生效。

脚本配置示例

{
  "cache_key": {
    "system_params": [
      "$context.sourceIp",
      "$context.requestId"
    ],
    "parameters": [
      "demo_parameters"
    ],
    "headers": [
      "demo_header"
    ]
  },
  "cache_http_status_and_ttl": [
    {
      "http_status": [
        200
      ],
      "ttl": 300
    }
  ],
  "client_cache_control": {
    "mode": "apps",
    "datas": [
      "demo_app_id_1,demo_app_id_2"
    ]
  },
  "cacheable_headers": [
    "demo_cacheable_headers_1,demo_cacheable_headers_2"
  ]
}

为策略绑定API

  1. 单击策略名称,进入策略详情。
  2. 在API列表区域选择环境后,单击“绑定API”。
  3. 筛选API分组以及发布环境,勾选所需的API。

    支持通过API名称或标签筛选API,标签为创建API时定义的标签。

  4. 单击“确定”,绑定完成。

    • 如果单个API不需要绑定此策略,单击API所在行的“解绑”。
    • 如果批量API不需要绑定此策略,则勾选待解绑的API,单击列表上方“解绑”。最多同时解绑1000个API。

相关文档