キャッシュタイプのプラグインをAPIにバインドして、API GatewayのAPIのバックエンドサービスからの応答をキャッシュできます。 これにより、バックエンドの負荷が効果的に軽減され、応答時間が短縮されます。
1. 使用上の注意
キャッシュタイプのプラグインは、GETメソッドを使用するAPIリクエストに対する応答のみをキャッシュできます。
システムが割り当てたパブリック第2レベルドメイン名
を使用するリクエストの応答はキャッシュされません。 システムに割り当てられた第2レベルドメイン名は、デバッグとテストのみを目的としています。 API呼び出しに使用する場合、中国本土以外のリージョンでは1日あたり100回の呼び出しのみ、中国本土のリージョンでは1日あたり1,000回の呼び出しのみを実行できます。キャッシュプラグインを設定するときは、次のパラメーターを使用してキャッシュ内の応答を並べ替えることができます。
varyByApp: APIリクエストの送信元アプリに基づいて、キャッシュされたレスポンスをソートするかどうかを指定します。
varyByParameters: APIリクエストのリクエストパラメーターの値に基づいて、キャッシュされたレスポンスをソートするかどうかを指定します。 プラグインは、API要求に対する応答をソートするために、プラグインにバインドされたAPI操作の同じ要求パラメータを使用する。
varyByHeaders:
Accept
やAccept-Language
など、APIリクエストのリクエストヘッダーフィールドに基づいてキャッシュされたレスポンスをソートするかどうかを指定します。
API Gatewayは、各ユーザーに各リージョンで1 MBのキャッシュスペースを提供します。 キャッシュは有効期限後にクリアされます。 キャッシュがそのスペース制限に達すると、それ以上の応答はキャッシュに格納されません。
APIのバックエンドからの応答で
Cache-Control
ヘッダーフィールドが指定されている場合、応答は指定されたキャッシュポリシーに基づいてキャッシュに格納されます。Cache-Control
ヘッダーフィールドがレスポンスで指定されていない場合、レスポンスは、既定のキャッシュポリシーに基づいて、APIにバインドされているCachingタイプのプラグインのduration
パラメーターで指定された期間、キャッシュに格納されます。応答は、最大48時間 (172,800秒) キャッシュに格納できます。 48時間より長い期間を設定した場合、応答はキャッシュに48時間保存されます。
既定では、API Gatewayはクライアント要求の
Cache-Control
ヘッダーフィールドを無視します。 キャッシュタイプのプラグインにclientCacheControl
パラメーターを指定して、クライアント要求のCache-Control
ヘッダーフィールドを無視するか処理するかを決定できます。 clientCacheControlパラメーターを次のモードに設定できます。off
: すべてのクライアント要求のCache-Control
ヘッダーフィールドを無視します。all
: すべてのクライアント要求のCache-Control
ヘッダーフィールドを処理します。app
: キャッシュタイプのプラグインのapps
パラメーターで指定されたアプリからのリクエストのCache-Control
ヘッダーフィールドを処理します。
デフォルトでは、API Gatewayは、
Content-Type
、Content-Encoding
、およびContent-Language
ヘッダーフィールドのみをレスポンスにキャッシュします。 さらにヘッダーフィールドをキャッシュする必要がある場合は、Caching型のプラグインのcacheableHeaders
パラメーターにヘッダーフィールドを追加します。
2. プラグインの設定
キャッシュタイプのプラグインをJSON形式またはYAML形式で設定できます。 2つの形式は同じスキーマを持ち、変換ツールを使用して互いに変換できます。 次のコードでは、YAML形式のプラグイン構成テンプレートについて説明します。
---
varyByApp: false # Specifies whether to match and serve cached responses based on the app IDs of API callers. Default value: false.
varyByParameters: # Specifies whether to match and serve cached responses based on the values of specific parameters.
- userId # The name of a backend parameter. If the backend parameter is mapped to a parameter with a different name, set this parameter to the mapped parameter name.
varyByHeaders: # Specifies whether to match and serve cached responses based on different request headers.
- Accept # Cached responses are matched and served based on the Accept header.
clientCacheControl: # API Gateway determines how to process the Cache-Control headers of client requests based on the clientCacheControl settings.
mode: "app" # Valid values: off, all, and apps. Default value: off. off indicates that API Gateway ignores the Cache-Control headers of all client requests. all indicates that API Gateway processes the Cache-Control headers of all client requests. apps indicates that API Gateway processes only the Cache-Control headers of client requests whose app IDs are included in the configured apps list.
apps: # A list of app IDs. If mode is set to app, API Gateway processes only the Cache-Control headers of client requests whose app IDs are in this list.
- 1992323 # A sample app ID. It is not an AppKey.
- 1239922 # A sample app ID. It is not an AppKey.
cacheableHeaders: # The response header fields that can be cached. By default, only the `Content-Type`, `Content-Length`, and `Content-Language` header fields can be cached.
- X-Customer-Token # The name of the response header that can be cached.
duration: 3600 # The default storage period of the response in the cache. Unit: seconds.
3. 働くメカニズム
APIリクエストがAPIのキャッシュにヒットした場合、
X-Ca-Caching: true
ヘッダーがAPIリクエストのレスポンスに含まれます。
4. 制限事項
単一のプラグインのメタデータのサイズは50 KBを超えることはできません。
サイズが128 KBを超える応答本文はキャッシュできません。
共有インスタンスでのAPI操作の場合、各ユーザーには、各リージョンで最大1 MBの合計キャッシュスペースがあります。 専用インスタンスでのAPI操作の制限については、専用インスタンスの仕様をご参照ください。