全部產品
Search
文件中心

API Gateway:快取區外掛程式

更新時間:Oct 30, 2024

通過緩衝可以將後端返回的應答緩衝在API Gateway服務層面,有效降低後端的負荷,增加平滑度。

1. 使用方法

  • 僅緩衝GET方法的應答

  • 不緩衝使用預設分組次層網域的請求,預設分組次層網域有1000次/天的限制(海外Region及中國香港限制100次/天),僅用於測試場合

  • 可在外掛程式中加入如下的配置來區分不同的緩衝

    • varyByApp:針對不同的App區分緩衝

    • varyByParameters:針對不同的參數取值區分緩衝,從綁定的API取同名的參數

    • varyByHeaders:針對不同的要求標頭區分緩衝,如Accept,Accept-Language

  • 現在使用者在每個Region可以使用的緩衝空間為1M(按使用者區分), 使用超期釋放策略,緩衝滿了後不緩衝後續的應答。

  • 網關遵守後端應答中的Cache-Control頭的約定來處理緩衝,如果後端不返回Cache-Control頭,則預設緩衝,使用外掛程式中配置的duration欄位作為緩衝超期時間。

  • 最長允許的超期時間為48小時(172800秒), 超過這個時間的配置無效,被視為48小時超期

  • 網關預設不處理用戶端的Cache-Control頭,可以通過clientCacheControl來進行配置,mode取值為

    • off:忽略所有用戶端請求中的Cache-Control

    • all:處理對所有用戶端的請求中的Cache-Control

    • app:僅處理AppIdapps配置列表中的請求的Cache-Control

  • 對於應答的Header, 預設情況網關僅緩衝Content-TypeContent-Encoding,Content-Language頭,如果你需要更多的Headers, 可使用配置中的cacheableHeaders配置添加

2. 外掛程式配置

可以選擇JSON或者YAML格式的來配置您的外掛程式,兩種格式的schema相同,可以搜尋yaml to json轉換工具來進行配置格式的轉換,yaml格式的模板見下表。

---
varyByApp: false    # 是否按照訪問方的AppId來區分緩衝內容,  預設為false
varyByParameters:   # 按照不同的參數取值來區分緩衝內容
- userId            # 參數名稱,如果後端參數映射為不同的名稱,這裡請填寫映射後的參數名稱
varyByHeaders:      # 是否按照不同的請求Header值來區分緩衝內容
- Accept            # `Accept`表示按照不同的Accept頭來區分緩衝
clientCacheControl: # 允許用戶端通過`Cache-Control`頭來影響緩衝策略, 預設`off`
  mode: "app"       # off: 拒絕所有端, all: 允許所有端, apps: 允許appId取值在`apps`列表中的端
  apps:             # 如果mode配置為`app`, 則允許`AppId`在以下列表中的取值
  - 1992323         # 消費者AppId, 注意不是AppKey
  - 1239922         # 消費者AppId, 注意不是AppKey
cacheableHeaders:   # 允許緩衝的後端Headers, 預設只緩衝`Content-Type`和`Content-Length`
- X-Customer-Token  # 允許緩衝的Header名稱
duration: 3600      # 預設超期的秒數        

3. 運行規則

  • 當API Gateway命中Cache後,返回的應答中會包含頭X-Ca-Caching: true

4. 使用限制

  • 外掛程式中繼資料的大小限制為50KB

  • 超過128K的應答BODY不會被緩衝。

  • 對於共用執行個體/Serverless執行個體來講,每個使用者每個Region的總限制為1M Bytes,專享執行個體請參考執行個體規格說明。