このページでは、Cloud CDN キャッシュキーのカスタマイズ方法について説明します。
キャッシュキーの構成を変更した結果、キャッシュ ヒット率が急に低下することがありますが、これは新しいリクエストが古いキャッシュキー エントリとは異なるキャッシュキーを使い始めた場合です。同様に、キャッシュキーの生成元を変更しても、新しいリクエストが古いキャッシュキーと同じキーを使用していれば、キャッシュ内のエントリが無効化されないこともあります。キャッシュに保存されたエントリを無効にする方法については、キャッシュに保存されたコンテンツの無効化をご覧ください。
始める前に
このページの説明は、Cloud CDN、Cloud CDN キャッシュキー、負荷分散されたバックエンド サービスを理解していることを前提としています。先に進む前に、これらのページをご確認ください。
Cloud CDN を有効にしてキャッシュキーをカスタマイズする
以下では、ロード バランシングされたバックエンド サービスで Cloud CDN を有効にし、キャッシュキーをカスタマイズする方法を説明します。送信元として使用するロードバランサがまだない場合は、外部アプリケーション ロードバランサのドキュメントを参照して作成手順を確認してください。
バックエンド バケットでは、Cloud Storage バケット内のオブジェクトの参照方法に影響しないため、キャッシュキーにプロトコルやホストは含まれません。ただし、Cloud Storage に固有のクエリ文字列パラメータが含まれています。このパラメータはレスポンスに影響する可能性があり、カスタマイズ可能なパラメータ名のリストによって拡張できます。
コンソール
Google Cloud コンソールで、[Cloud CDN] ページに移動します。
更新する送信元の名前をクリックします。
[編集] をクリックします。
送信元に複数のロードバランサが接続されている場合は、[編集] メニューから更新するロードバランサを選択します。
[キャッシュ パフォーマンス] セクションを開くには、[次へ] をクリックします。
[キャッシュキー] で [カスタム] を選択します。
[キャッシュキーのコンポーネント] セクションで、デフォルトではすべてのコンポーネントが選択されています。キャッシュキーから除外するコンポーネントのチェックボックスをオフにします。
[完了] をクリックします。
gcloud
バックエンド サービスのキャッシュキーから 1 つ以上のコンポーネントを除外するには、gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-services update BACKEND_SERVICE \
--no-cache-key-include-protocol \
--no-cache-key-include-host \
--no-cache-key-include-query-string
バックエンド バケットの場合は、gcloud compute backend-buckets update コマンドを使用します。
API
キャッシュキーから 1 つ以上のコンポーネントを除外するには、backendServices リソースの cdnPolicy の cacheKeyPolicy セクションで構成オプションを指定します。
バックエンド サービスの場合は、backendServices.update メソッドの API 呼び出しを使用します。
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
バックエンド バケットの場合は、backendBuckets.update メソッドの API 呼び出しを使用します。
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"includeProtocol": false,
"includeHost": false,
"includeQueryString": false
}
]
}
キャッシュキーを更新してプロトコル、ホスト、クエリ文字列を追加する
デフォルトでは、Cloud CDN を使用するように構成されたバックエンド サービスでは、リクエスト URI のすべてのコンポーネントをキャッシュキーに含めます。キャッシュキーから除外するよう設定しておいたコンポーネントを再度追加するには、以下の手順を行います。
次の操作を行うと、Cloud CDN が有効になっているバックエンド サービスのキャッシュキーにプロトコル、ホスト、クエリ文字列を追加できます。
コンソール
Google Cloud コンソールで、[Cloud CDN] ページに移動します。
更新する送信元の名前をクリックします。
[編集] をクリックします。
送信元に複数のロードバランサが接続されている場合は、[編集] メニューから更新するロードバランサを選択します。
[キャッシュ パフォーマンス] セクションを開くには、[次へ] をクリックします。
[キャッシュキー] で [カスタム] を選択します。
[キャッシュキーのコンポーネント] セクションで、[プロトコル]、[ホスト]、[クエリ文字列] のチェックボックスをオンにします。
[完了] をクリックします。
gcloud
バックエンド サービスのキャッシュキーに 1 つ以上のコンポーネントを追加するには、gcloud compute backend-services update コマンドを使用します。
指定しないフラグは変更されません。
gcloud compute backend-services update BACKEND_SERVICE \
--cache-key-include-protocol \
--cache-key-include-host \
--cache-key-include-query-string
API
キャッシュキーに 1 つ以上のコンポーネントを追加するには、backendServices リソースの cdnPolicy の cacheKeyPolicy セクションで構成オプションを指定します。
JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"includeProtocol": true,
"includeHost": true,
"includeQueryString": true
}
]
}
キャッシュキーを更新してクエリ文字列パラメータの追加リストまたは除外リストを使用する
次の手順では、Cloud CDN キャッシュキーを設定して、クエリ文字列パラメータを含む追加リストまたは除外リストを使用します。
コンソール
Google Cloud コンソールで、[Cloud CDN] ページに移動します。
更新する送信元の名前をクリックします。
[編集] をクリックします。
送信元に複数のロードバランサが接続されている場合は、[編集] メニューから更新するロードバランサを選択します。
[キャッシュ パフォーマンス] セクションを開くには、[次へ] をクリックします。
[キャッシュキー] で [カスタム] を選択します。
[キャッシュキーのコンポーネント] セクションで、[クエリ文字列] チェックボックスをオンにします。次のいずれかのオプションを選択します。
キャッシュキーに入れるクエリ文字列パラメータを指定するには、[選択項目のみを含める] を選択します。
キャッシュキーに指定したものを除き、すべてのクエリ文字列パラメータを指定するには、[選択項目以外をすべて含める] を選択します。
[パラメータを追加] をクリックして、パラメータを指定します。
[完了] をクリックします。
gcloud
バックエンド サービスの追加リストまたは除外リストを指定するには、gcloud compute backend-services
update コマンドを使用してクエリ文字列パラメータを指定します。
次のコマンドを使用して、クエリ文字列パラメータ user をバックエンド サービスの追加リストに設定します。
gcloud compute backend-services update BACKEND_SERVICE \
--cache-key-include-query-string \
--cache-key-query-string-whitelist user
次のコマンドを使用して、クエリ文字列パラメータ user をバックエンド サービスの除外リストに設定します。
gcloud compute backend-services update BACKEND_SERVICE \
--cache-key-include-query-string \
--cache-key-query-string-blacklist user
次のコマンドを使用して、クエリ文字列パラメータ user をバックエンド バケットの追加リストに設定します。
gcloud compute backend-buckets update BACKEND_BUCKET \
--cache-key-query-string-whitelist user
API
バックエンド サービスの追加リストまたは除外リストを指定するには、backendServices リソースの cdnPolicy の cacheKeyPolicy セクションでクエリ文字列パラメータを指定します。
追加リストを指定するには、JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"queryStringWhitelist": [QUERY_STRINGS]
}
]
}
QUERY_STRINGS は、クエリ文字列パラメータのカンマ区切りリストに置き換えます。
除外リストを指定するには、次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"queryStringBlacklist": [QUERY_STRINGS]
}
]
}
HTTP ヘッダーを使用するようにキャッシュキーを更新する
次の手順では、HTTP ヘッダーを使用するように Cloud CDN キャッシュキーを設定します。これにより、許可されたカスタム変数を含めることが可能になります。
コンソール
Google Cloud コンソールで、[Cloud CDN] ページに移動します。
更新する送信元の名前をクリックします。
[編集] をクリックします。
送信元に複数のロードバランサが接続されている場合は、[編集] メニューから更新するロードバランサを選択します。
[キャッシュ パフォーマンス] セクションを開くには、[次へ] をクリックします。
[キャッシュキー] で [カスタム] を選択します。
[キャッシュキーのコンポーネント] セクションで、[HTTP ヘッダー] チェックボックスをオンにします。
1 つ以上の HTTP ヘッダーを指定するには、[HTTP ヘッダーを追加] をクリックします。
[完了] をクリックします。
gcloud
cache-key-include-http-header オプションを指定して gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-services update BACKEND_SERVICE \
--cache-key-include-http-header=[HEADER_FIELD_NAMES,...]
HEADER_FIELD_NAMES は、ヘッダー名のカンマ区切りリストに置き換えます。
API
backendServices リソースの cdnPolicy の cacheKeyPolicy セクションで、キャッシュキーの HTTP ヘッダーを指定します。
JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"includeHttpHeaders": [HEADER_FIELD_NAMES]
}
]
}
HEADER_FIELD_NAMES は、ヘッダー名のカンマ区切りリストに置き換えます。
指定されたキャッシュキー ヘッダーがカスタム リクエスト ヘッダーとしても指定されている場合、変数の全範囲は使用できません。
詳細については、リクエスト ヘッダーでのカスタム変数の使用をご覧ください。
名前付き Cookie を使用するようにキャッシュキーを更新する
次の手順では、HTTP Cookie を使用するように Cloud CDN キャッシュキーを設定します。
コンソール
Google Cloud コンソールで、[Cloud CDN] ページに移動します。
更新する送信元の名前をクリックします。
[編集] をクリックします。
送信元に複数のロードバランサが接続されている場合は、[編集] メニューから更新するロードバランサを選択します。
[キャッシュ パフォーマンス] セクションを開くには、[次へ] をクリックします。
[キャッシュキー] で [カスタム] を選択します。
[キャッシュキーのコンポーネント] セクションで、[名前付き Cookie] チェックボックスをオンにします。
1 つ以上の Cookie を指定するには、[名前付き Cookie を追加] をクリックします。
[完了] をクリックします。
gcloud
cache-key-include-named-cookie オプションを指定して gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-services update BACKEND_SERVICE \
--cache-key-include-named-cookie=[NAMED_COOKIES,...]
NAMED_COOKIES は、名前付き Cookie のカンマ区切りリストに置き換えます。
API
バックエンド サービスの追加リストまたは除外リストを指定するには、backendServices リソースの cdnPolicy の cacheKeyPolicy セクションでクエリ文字列パラメータを指定します。
追加リストを指定するには、JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": {
"cacheKeyPolicy": [
{
"includeNamedCookies": [NAMED_COOKIES]
}
]
}
NAMED_COOKIES は、クエリ文字列パラメータのカンマ区切りリストに置き換えます。
次のステップ
- Cloud CDN がキャッシュからレスポンスを提供しているかどうかを確認するには、キャッシュのログと指標をご覧ください。