このページでは、Cloud CDN でネガティブ キャッシュを使用する手順について説明します。ネガティブ キャッシュを使用すると、ステータス コードごとに異なる TTL を設定できます。
これにより、一般的なエラーやリダイレクトに詳細なキャッシュを適用できるようになります。これにより、送信元の負荷を軽減し、レスポンスのレイテンシを短縮することで、エンドユーザーのエクスペリエンスを向上させることができます。
始める前に
キャッシュ モードと静的コンテンツについて確認します。
Cloud CDN が有効になっていることを確認します。手順については、Cloud CDN の使用をご覧ください。
必要に応じて、次のコマンドで Google Cloud CLI を最新バージョンに更新します。
gcloud components update
ステータス コードとデフォルトの TTL
ネガティブ キャッシュは、次の表に示す特定のステータス コードに適用されます。
Cloud CDN は、これらのステータス コードに次のデフォルト TTL を適用します。
ステータス コード | 意味 | TTL |
---|---|---|
HTTP 300 | 複数の選択肢があります | 10 分 |
HTTP 301 と 308 | 恒久的なリダイレクト | 10 分 |
HTTP 302 と 307 | 一時的なリダイレクト | デフォルトではキャッシュに保存されません |
HTTP 404 | 見つかりませんでした | 120 秒 |
HTTP 405 | メソッドが見つかりません | 60 秒 |
HTTP 410 | 存在しません | 120 秒 |
HTTP 451 | 法律上の理由で利用できません | 120 秒 |
HTTP 501 | 実装されていない | 60 秒 |
これらのデフォルト値をオーバーライドするには、ネガティブ キャッシュを使用して、指定された HTTP ステータス コードのキャッシュ TTL を設定します。
ネガティブ キャッシュの設定
ネガティブ キャッシュを使用すると、失敗と成功をキャッシュに保存するようにサービスを構成できます。これにより Cloud CDN は、成功のレスポンスを生成するリクエストから送信元を保護する場合と同様に、エラー(404 Not Found など)を生成するリクエストから送信元を保護できます。
Console
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
- 外部 HTTP(S) ロードバランサの名前をクリックします。
- [編集] をクリックします。
- [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
- [Cloud CDN を有効にする] が選択されていることを確認します。
- ウィンドウの下部にある [高度な構成] をクリックします。
- [ネガティブ キャッシュを有効にする] をクリックします。
- [ネガティブ キャッシュ ポリシーを追加] をクリックします。
- HTTP ステータス コードを入力します。
- キャッシュの有効期間(TTL)を選択します。
- [更新] をクリックします。
- [更新] をもう一度クリックします。
gcloud
バックエンド バケットには、--negative-caching
フラグを指定して gcloud compute backend-buckets create コマンドまたは gcloud compute backend-buckets update コマンドを使用します。
バックエンド サービスには、--negative-caching
フラグを指定して gcloud compute backend-services create コマンドまたは gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --negative-caching
2 つの特定のエラー レスポンスのネガティブ キャッシュのみを有効にするには、ステータス コード 404
のレスポンスを 60 秒間キャッシュに保存し、ステータス コード 405
のレスポンスを 120 秒間キャッシュに保存します。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --negative-caching \ --cache-mode=CACHE_ALL_STATIC \ --default-ttl=86400 \ --negative-caching-policy='404=60,405=120'
api
バックエンド バケットには、Method: backendBuckets.insert API 呼び出しまたは Method: backendBuckets.update API 呼び出しを使用します。
バックエンド サービスには、Method: backendServices.insert API 呼び出しまたは Method: backendServices.update API 呼び出しを使用します。
次のいずれかの API 呼び出しを使用します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": { "negativeCaching": ON, "negativeCachingPolicy": [ { "code": STATUS_CODE, "ttl": TTL_SECONDS } ] }
negativeCachingPolicy
を構成するには、ネガティブ キャッシュを有効にする必要があります。ポリシーを省略し、negativeCaching
を有効にしている場合、Cloud CDN はステータス コードとデフォルトの TTL にあるデフォルト値を使用します。
ネガティブ キャッシュ ポリシーを指定する場合は、キャッシュに保存するすべてのレスポンス コードにキャッシュ TTL を指定してください。ポリシーが指定されている場合、Cloud CDN はデフォルトのネガティブ キャッシュを適用しません。
STATUS_CODE には、次の HTTP ステータス コードを指定できます。
300
、301
、302
、307
、308
404
、405
、410
、421
、451
501
ステータス コードごとにレスポンスをキャッシュに保存する秒数を指定できます。ステータス コードのネガティブ キャッシュを無効にするには、negativeCachingPolicy
のリストからそのコードを削除します(TTL が 0 の場合もキャッシュが無効になりますが、リストからコードを削除することをおすすめします)。
最大許容値は 1,800 秒(30 分)です。ただし、アクセス頻度の少ないオブジェクトは、定義された TTL の前にキャッシュから削除されることがあります。
キャッシュ モードを CACHE_ALL_STATIC
または USE_ORIGIN_HEADERS
に設定すると、指定したレスポンス コードを持ち、Cache-Control
または Expires
ヘッダーのないレスポンスにネガティブ キャッシュが適用されます。
キャッシュ モードが FORCE_CACHE_ALL
に設定されている場合、ネガティブ キャッシュは送信元によって設定されたキャッシュ ヘッダーをオーバーライドします。Cloud CDN は TTL で指定された時間だけ応答をキャッシュするか、TTL が設定されていない場合はまったくキャッシュしません。
また、キャッシュ モードを FORCE_CACHE_ALL
に設定すると、Cloud CDN は Cache-Control
ヘッダーでクライアントに送信された max-age
も変更します。特に、特定のエラーに TTL 設定が構成されている場合、Cloud CDN はその TTL 設定と client_ttl
構成設定の小さい方を取得し、その値を含む Cache-Control: public,max-age=N
ヘッダーを送信します。特定のエラーに TTL 設定が構成されていない場合、Cloud CDN は送信元から送信された Cache-Control
ヘッダーをすべて削除します。Cloud CDN は、送信元から送信された Expires
ヘッダーも常に削除します。
Cloud CDN は、GET
リクエストに応じてキャッシュに保存します。詳しくは、キャッシュに保存可能なコンテンツをご覧ください。
各キャッシュ エントリはキャッシュキーで識別されます。
ネガティブ キャッシュを無効にする
Console
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
- 外部 HTTP(S) ロードバランサの名前をクリックします。
- [編集] をクリックします。
- [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
- [Cloud CDN を有効にする] が選択されていることを確認します。
- ウィンドウの下部にある [高度な構成] をクリックします。
- [ネガティブ キャッシュを有効にする] の横にあるチェックボックスをオフにします。
- [更新] をクリックします。
- [更新] をもう一度クリックします。
gcloud
バックエンド バケットには、--no-negative-caching
フラグを指定して gcloud compute backend-buckets create コマンドまたは gcloud compute backend-buckets update コマンドを使用します。
バックエンド サービスには、--no-negative-caching
フラグを指定して gcloud compute backend-services create コマンドまたは gcloud compute backend-services update コマンドを使用します。
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME) --no-negative-caching
api
バックエンド バケットには、Method: backendBuckets.insert API 呼び出しまたは Method: backendBuckets.update API 呼び出しを使用します。
バックエンド サービスには、Method: backendServices.insert API 呼び出しまたは Method: backendServices.update API 呼び出しを使用します。
次のいずれかの API 呼び出しを使用します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
JSON リクエストの本文に次のスニペットを追加します。
"cdnPolicy": { "negativeCaching": OFF }