ネガティブ キャッシュの使用

このページでは、Cloud CDN でネガティブ キャッシュを使用する手順について説明します。ネガティブ キャッシュを使用すると、ステータス コードごとに異なる TTL を設定できます。

これにより、一般的なエラーやリダイレクトに詳細なキャッシュを適用できるようになります。これにより、送信元の負荷を軽減し、レスポンスのレイテンシを短縮することで、エンドユーザーのエクスペリエンスを向上させることができます。

始める前に

  • キャッシュ モードと静的コンテンツについて確認します。

  • Cloud CDN が有効になっていることを確認します。手順については、Cloud CDN の使用をご覧ください。

  • 必要に応じて、Cloud SDK を最新バージョンに更新します。

    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 421 誤って転送されたリクエスト 60 秒
HTTP 451 法律上の理由で利用できません 120 秒
HTTP 501 実装されていない 60 秒

これらのデフォルト値をオーバーライドするには、ネガティブ キャッシュを使用して、指定された HTTP ステータス コードのキャッシュ TTL を設定します。

ネガティブ キャッシュの設定

ネガティブ キャッシュを使用すると、失敗と成功をキャッシュに保存するようにサービスを構成できます。これにより Cloud CDN は、成功のレスポンスを生成するリクエストから送信元を保護する場合と同様に、エラー(404 Not Found など)を生成するリクエストから送信元を保護できます。

Console

  1. Google Cloud Console で、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. 外部 HTTP(S) ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
  5. [Cloud CDN を有効にする] が選択されていることを確認します。
  6. ウィンドウの下部にある [高度な構成] をクリックします。
  7. [ネガティブ キャッシュを有効にする] をクリックします。
  8. [ネガティブ キャッシュ ポリシーを追加] をクリックします。
    1. HTTP ステータス コードを入力します。
    2. キャッシュの有効期間(TTL)を選択します。
  9. [更新] をクリックします。
  10. [更新] をもう一度クリックします。

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 ステータス コードを指定できます。

  • 300301302307308
  • 404405410421451
  • 501

ステータス コードごとにレスポンスをキャッシュに保存する秒数を指定できます。ステータス コードのネガティブ キャッシュを無効にするには、TTL フィールドを省略します。

最大許容値は 1, 800 秒(30 分)です。ただし、アクセス頻度の少ないオブジェクトは、定義された TTL の前にキャッシュから削除されることがあります。

キャッシュ モードを CACHE_ALL_STATIC または USE_ORIGIN_HEADERS に設定すると、指定したレスポンス コードを持ち、cache-control または expires ヘッダーのないレスポンスにネガティブ キャッシュが適用されます。キャッシュ モードが FORCE_CACHE_ALL に設定されている場合、ネガティブ キャッシュは、指定したレスポンス コードを持つすべてのレスポンスに適用され、キャッシュ ヘッダーをオーバーライドします。

ネガティブ キャッシュを無効にする

Console

  1. Google Cloud Console で、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. 外部 HTTP(S) ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
  5. [Cloud CDN を有効にする] が選択されていることを確認します。
  6. ウィンドウの下部にある [高度な構成] をクリックします。
  7. [ネガティブ キャッシュを有効にする] をクリックします。
  8. ネガティブ キャッシュ ポリシーを削除します。
  9. [ネガティブ キャッシュを有効にする] の横にあるチェックボックスをオフにします。
  10. [更新] をクリックします。
  11. [更新] をもう一度クリックします。

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
}