キャッシュプラグインは、API Gateway でバックエンドのレスポンスをキャッシュすることで、バックエンドの負荷を軽減し、応答時間を短縮します。
1. 注意事項
-
GET メソッドへのレスポンスのみがキャッシュされます。
-
デフォルトグループの第 2 レベルドメインを使用するリクエストはキャッシュできません。デフォルトグループの第 2 レベルドメインはテスト専用であり、1日あたり 1,000 回までの呼び出し制限があります。中国 (香港) および中国本土以外のリージョンの場合は、1日あたり 100 回までです。 -
次の設定を追加して、キャッシュを区別します。
-
varyByApp:アプリに基づいてキャッシュを区別します。
-
varyByParameters:パラメーター値に基づいてキャッシュを区別します。パラメーターは、バインドされている API で定義された名前と一致する必要があります。
-
varyByHeaders:
AcceptやAccept-Languageなどのリクエストヘッダーに基づいてキャッシュを区別します。
-
-
各ユーザーは、リージョンごとに 1 MB のキャッシュ領域を使用できます。領域は有効期限ポリシーに基づいて解放されます。キャッシュが一杯の場合、後続のレスポンスはキャッシュされません。
-
バックエンドのレスポンスに
Cache-Controlヘッダーが含まれている場合、API Gateway はそのポリシーに従ってレスポンスをキャッシュします。含まれていない場合、レスポンスはキャッシュプラグインのdurationパラメーターで指定された期間キャッシュされます。 -
有効期限の最大値は 48 時間 (172,800 秒) です。この制限を超える値は無効とみなされ、デフォルトで 48 時間が設定されます。
-
デフォルトでは、API Gateway はクライアントの
Cache-Controlヘッダーを無視します。この動作を変更するには、clientCacheControlパラメーターを使用します。modeには次の値を指定できます。-
off:すべてのクライアントリクエストに含まれるCache-Controlヘッダーを無視します。 -
all:すべてのクライアントリクエストに含まれるCache-Controlヘッダーを処理します。 -
app:アプリ ID がapps設定リストに含まれるリクエストに対してのみ、Cache-Controlヘッダーを処理します。
-
-
デフォルトでは、API Gateway は
Content-Type、Content-Length、Content-Languageのレスポンスヘッダーのみをキャッシュします。追加のヘッダーをキャッシュするには、cacheableHeadersパラメーターを設定します。
2. プラグインの設定
プラグインは JSON または YAML 形式で設定します。どちらの形式も同じスキーマを共有し、yaml to json ツールで相互に変換できます。次のテンプレートは YAML 形式です。
---
varyByApp: false # API 呼び出し元のアプリ ID に基づいて、キャッシュされたレスポンスを照合して返すかどうかを指定します。デフォルト値:false。
varyByParameters: # 特定のパラメーターの値に基づいて、キャッシュされたレスポンスを照合して返すかどうかを指定します。
- userId # バックエンドパラメーターの名前。バックエンドパラメーターが別名のパラメーターにマッピングされている場合は、このパラメーターにマッピング先のパラメーター名を設定します。
varyByHeaders: # 異なるリクエストヘッダーに基づいて、キャッシュされたレスポンスを照合して返すかどうかを指定します。
- Accept # Accept ヘッダーに基づいて、キャッシュされたレスポンスを照合して返します。
clientCacheControl: # clientCacheControl の設定に基づいて、API Gateway がクライアントリクエストの Cache-Control ヘッダーをどのように処理するかを決定します。
mode: "app" # 有効な値:off、all、app。デフォルト値:off。off は、API Gateway がすべてのクライアントリクエストの Cache-Control ヘッダーを無視することを示します。all は、API Gateway がすべてのクライアントリクエストの Cache-Control ヘッダーを処理することを示します。app は、API Gateway が、設定済みの apps リストにアプリ ID が含まれるクライアントリクエストの Cache-Control ヘッダーのみを処理することを示します。
apps: # アプリ ID のリスト。mode が app に設定されている場合、API Gateway はこのリストにアプリ ID が含まれるクライアントリクエストの Cache-Control ヘッダーのみを処理します。
- 1992323 # アプリ ID のサンプル。AppKey ではありません。
- 1239922 # アプリ ID のサンプル。AppKey ではありません。
cacheableHeaders: # キャッシュ可能なレスポンスヘッダーフィールド。デフォルトでは、'Content-Type'、'Content-Length'、'Content-Language' ヘッダーフィールドのみキャッシュできます。
- X-Customer-Token # キャッシュ可能なレスポンスヘッダーの名前。
duration: 3600 # キャッシュ内にレスポンスを保存するデフォルト期間 (秒)。
3. 実行時のルール
-
API Gateway でキャッシュヒットが発生すると、レスポンスに
X-Ca-Caching: trueヘッダーが含まれます。
4. 制限
-
プラグインメタデータのサイズは 50 KB に制限されています。
-
サイズが 128 KB を超えるレスポンスボディはキャッシュできません。
-
サーバーレスインスタンスの場合、ユーザーあたりのキャッシュ合計サイズの上限はリージョンごとに 1 MB です。専有インスタンスの場合は、インスタンスの仕様をご参照ください。