日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

API 緩存配置

更新時間:

API 網關支持對某些請求的結果進行緩存。如果一個接口本身是冪等的,并且返回值在一定時間內不會發生變化,那么可以在 API 網關上配置緩存。

  • 當前支持的緩存最長時間為 5 分鐘。

  • 緩存的 key 可以從 Header、Cookie、QueryString 或 Body 中選擇。

  • 如果選擇 Body,Body 必須是一個 JSON 字符串,暫時不支持 pb 格式的 Body。

說明

目前 API 緩存只支持 downstream 為 HTTP 的請求,暫時不支持 SOFARPC 的請求。

配置說明

假設 API 的配置如下:

- method:GET
- path:/test/cache
- cacheConfig: header:["version","temp"], queryString:["a","b"]; ttl 10s

此處的 cacheConfig 含義是:

  • 如果 Header 中存在 versiontemp,并且 QueryString 中存在 ab,那么這個請求的響應將會被緩存。

  • 如果第二個請求中 Header 和 QueryString 的 value 和第一個請求一樣,那么網關會直接將第一個請求的緩存返回,而不會再去調用服務提供方。

例如,第一個請求如下:

curl -H "version=1" -H "temp=true" 127.0.0.1?a=a&b=b 

該請求包含了 a 和 b 兩個 QueryString key,也包含 version 和 temp 兩個 Header key,所以這個請求的響應會被緩存 10s。

假設 10s 內的第二個請求如下:

curl -H "version=1" -H "temp=true" -H "other=other" 127.0.0.1?a=a&b=b&c=c

該請求也包含了相應的 key,同時值也和第一個請求相同。這個請求網關會直接返回緩存值,而不會調用到后端 server。

設置 Key

當前,API 網關支持設置 Header、Body、Query、Cookie key。

  • Header、Query、Cookie 都比較簡單,直接設置 key 就可以的。

  • 但是 Body 一般都比較復雜,無法直接通過一個簡單的字符串定位到,所以設置的方式比較特殊。當前僅支持 Body 為 JSON 的請求。

Body key 設置示例

假設 Body 是如下字符串:

{
  "name": {"first": "Tom", "last": "Anderson"},
  "age":37,
  "children": ["Sara","Alex","Jack"],
  "fav.movie": "Deer Hunter",
  "friends": [
    {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
    {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
    {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
  ]
}

設置 Body key 的時候,需要使用一個簡單的表達式:

"name.last"         >> "Anderson"
"age"                >> 37
"children"           >> ["Sara","Alex","Jack"]
"children.#"         >> 3
"children.1"         >> "Alex"
"child*.2"           >> "Jack"
"c?ildren.0"         >> "Sara"
"fav\.movie"         >> "Deer Hunter"
"friends.#.first"    >> ["Dale","Roger","Jane"]
"friends.1.last"     >> "Craig"

您還可以使用 #(…) 查詢第一個匹配項的數組,或使用 #(…)# 查找所有匹配項。支持 ==!=<<=>>= 和簡單的模式匹配 %(like)和 !%(not like)。

friends.#(last=="Murphy").first    >> "Dale"
friends.#(last=="Murphy")#.first   >> ["Dale","Jane"]
friends.#(age>45)#.last            >> ["Craig","Murphy"]
friends.#(first%"D*").last         >> "Murphy"
friends.#(first!%"D*").last        >> "Craig"
friends.#(nets.#(=="fb"))#.first   >> ["Dale","Roger"]

控制臺配置

您可以直接在 API 網關控制臺> API 詳情頁 > 流量治理 > 緩存 進行相應的 API 緩存配置,如下圖所示。

緩存配置

說明

當前 Body 的嵌套最多支持 5 層,比如 a.b.c.d.e.f。超過 5 層暫不支持。