すべてのプロダクト
Search
ドキュメントセンター

API Gateway:キャッシュタイプのプラグイン

最終更新日:Jul 31, 2024

キャッシュタイプのプラグインをAPIにバインドして、API GatewayのAPIのバックエンドサービスからの応答をキャッシュできます。 これにより、バックエンドの負荷が効果的に軽減され、応答時間が短縮されます。

1. 使用上の注意

  • キャッシュタイプのプラグインは、GETメソッドを使用するAPIリクエストに対する応答のみをキャッシュできます。

  • システムが割り当てたパブリック第2レベルドメイン名を使用するリクエストの応答はキャッシュされません。 システムに割り当てられた第2レベルドメイン名は、デバッグとテストのみを目的としています。 API呼び出しに使用する場合、中国本土以外のリージョンでは1日あたり100回の呼び出しのみ、中国本土のリージョンでは1日あたり1,000回の呼び出しのみを実行できます。

  • キャッシュプラグインを設定するときは、次のパラメーターを使用してキャッシュ内の応答を並べ替えることができます。

    • varyByApp: APIリクエストの送信元アプリに基づいて、キャッシュされたレスポンスをソートするかどうかを指定します。

    • varyByParameters: APIリクエストのリクエストパラメーターの値に基づいて、キャッシュされたレスポンスをソートするかどうかを指定します。 プラグインは、API要求に対する応答をソートするために、プラグインにバインドされたAPI操作の同じ要求パラメータを使用する。

    • varyByHeaders: AcceptAccept-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-TypeContent-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操作の制限については、専用インスタンスの仕様をご参照ください。