缓存

最近更新时间:2023-06-26 10:42:44

我的收藏

操作场景

通过配置缓存插件,API 网关可存储后端应答,当遇到相同请求参数的请求时,API 网关将直接返回缓存的应答,无需转发到后端服务,以此达到降低后端的负荷,减少时延,增加平滑度的目的。

操作步骤

步骤1:创建插件

1. 登录 API 网关控制台
2. 在左侧导航栏,单击插件 > 系统插件 ,进入系统插件列表页。
3. 单击列表左上角的新建,插件类型选择缓存



缓存插件的配置项如下:
参数
是否必填
说明
缓存参数
必填
根据参数或参数的组合区分缓存内容,参数位置支持选择 Header、Path、Query。
请求方法
必填
支持 GET、POST、PUT、DELETE、HEAD 方法,支持多选。
缓存状态码
必填
仅缓存插件中填写的状态码的响应,其他状态码不缓存,多个状态码间用英文逗号隔开。
Cache-Control
必填
通过 Cache-Control 请求头影响缓存策略,默认关闭。
缓存时间
必填
缓存有效的时间,可填写大于0到3600之间的正整数。

步骤2:绑定 API 并生效

1. 系统插件列表中选中刚刚创建好的插件,单击操作列的绑定 API
2. 在绑定 API 弹窗中选择服务和环境,并选择需要绑定插件的 API。



3. 单击确定,即可将插件绑定到 API,此时插件的配置已经对 API 生效。

PluginData

{
"cache_key_params": [{ // 区分缓存的参数,parameter来源是api定义的参数,position取值为[header,query,path]
"parameter": "param1",
"position": "header"
}, {
"parameter": "param2",
"position": "query"
}, {
"parameter": "param3",
"position": "path"
}],
"cacheable_methods": ["GET", "POST"], // 可取缓存的http method,取值[GET、POST、PUT、DELETE、HEAD]
"cacheable_response_codes": [200, 301, 404], // 可缓存的http返回码
"cache_control": false, // 是否开启http标准的cache control语义,开启后,request和response的cache control都会生效,生效时会忽略自定义的ttl
"ttl": 300 // 自定义缓存有效期,cache_control为false时生效。取值范围 [1,3600]
}

注意事项

API 网关做参数校验和命中缓存时,都是大小写不敏感的。
对于共享实例来讲,每个用户每个 Region 的缓存容量总限制为5M;每台专享实例的缓存容量总限制为1G。
当开启 Cache-Control 配置时,网关将遵守请求/响应头中的 Cache-Control 头的约定来处理缓存。在这种情况下,如果网关获取不到 Cache-Control 头,则默认进行缓存,并使用插件中配置的“缓存时间”字段作为缓存超期时间。