キャッシュ モードの変更

このページでは、Cloud CDN でキャッシュ モードを変更する手順について説明します。キャッシュ モードでは、Cloud CDN がコンテンツをキャッシュに保存する方法を構成できます。

始める前に

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

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

  • 必要に応じて、次のコマンドで Google Cloud CLI を最新バージョンに更新します。

    gcloud components update
    

キャッシュ モードの設定

Cloud CDN 対応バックエンドのキャッシュ モードを構成するには、次の操作を行います。

Console

  1. Google Cloud Console で、[ロード バランシング] ページに移動します。

    [ロード バランシング] ページに移動

  2. 外部アプリケーション ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
  5. [Cloud CDN を有効にする] が選択されていることを確認します。
  6. [キャッシュ モード] で、次のいずれかのオプションを選択します。
    • 静的コンテンツをキャッシュする(推奨): 静的コンテンツは、ユーザーごとに変更されないウェブアセットです。静的コンテンツはレスポンスの Content-Type に基づきます。詳細については、静的コンテンツをご覧ください。
    • Cache-Control ヘッダーに基づいて送信元の設定を使用する: レスポンス ヘッダーに有効なキャッシュ ディレクティブを指定してレスポンスをキャッシュに保存します。
    • すべてのコンテンツを強制的にキャッシュする: private または no-store ディレクティブを無視し、送信元から提供されたコンテンツをすべてキャッシュに保存します。
  7. [保存] をクリックします。

gcloud

バックエンド サービスの場合は、--cache-mode フラグを指定して gcloud compute backend-services create または gcloud compute backend-services update コマンドを使用します。

バックエンド バケットの場合は、--cache-mode フラグを指定して gcloud compute backend-buckets create または gcloud compute backend-buckets update コマンドを使用します。

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --cache-mode=CACHE_MODE

CACHE_MODE を次のいずれかに置き換えます。

  • CACHE_ALL_STATIC(デフォルト): 静的コンテンツを自動的にキャッシュに保存します。キャッシュ不可としてマークされている(Cache-Control でレスポンス ヘッダー内の private または no-store ディレクティブ)レスポンスは、キャッシュに保存されません。動的コンテンツをキャッシュに保存するには、コンテンツに有効なキャッシュ ヘッダーが含まれている必要があります。

  • USE_ORIGIN_HEADERS: コンテンツをキャッシュに保存するには、送信元で有効なキャッシュ ヘッダーを設定する必要があります。これらのヘッダーがないレスポンスは Google のエッジでキャッシュに保存されません。リクエストごとに送信元を完全に通過する必要があるため、パフォーマンスに影響が及び、送信元サーバーの負荷が増加する可能性があります。

  • FORCE_CACHE_ALL: Cache-Control レスポンス ヘッダー内の private ディレクティブまたは no-store ディレクティブを無視して、すべてのコンテンツ(つまり、成功レスポンス)をキャッシュに保存します。この結果、ユーザー単位の(ユーザーを特定可能な)限定公開コンテンツがキャッシュに保存される場合があります。これを有効にするのは、限定公開コンテンツまたは動的コンテンツを配信していないバックエンド(Cloud Storage バケットなど)に限定する必要があります。限定公開または動的コンテンツを提供しているバックエンドでは有効にしないでください。

API

バックエンド バケットの場合は、Method: backendBuckets.insert または Method: backendBuckets.update API 呼び出しを使用します。

バックエンド サービスの場合は、Method: backendServices.insert または 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": {
  "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)

CACHE_MODE を次のいずれかに置き換えます。

  • CACHE_ALL_STATIC(デフォルト): 有効なキャッシュ ヘッダーが送信元で設定されていない場合、静的コンテンツを自動的にキャッシュに保存します。キャッシュ不可としてマークされている(Cache-Control レスポンス ヘッダー内の private または no-store のディレクティブ)レスポンスは、キャッシュに保存されません。動的コンテンツをキャッシュに保存するには、コンテンツに有効なキャッシュ ヘッダーが含まれている必要があります。

  • USE_ORIGIN_HEADERS: コンテンツをキャッシュに保存するには、送信元で有効なキャッシュ ヘッダーを設定する必要があります。これらのヘッダーがないレスポンスは Google のエッジでキャッシュに保存されません。リクエストごとに送信元を完全に通過する必要があるため、パフォーマンスに影響が及び、送信元サーバーの負荷が増加する可能性があります。

  • FORCE_CACHE_ALL: Cache-Control レスポンス ヘッダー内の private ディレクティブまたは no-store ディレクティブを無視して、すべてのコンテンツ(つまり、成功レスポンス)をキャッシュに保存します。この結果、ユーザー単位の(ユーザーを特定可能な)限定公開コンテンツがキャッシュに保存される場合があります。これを有効にするのは、非公開コンテンツや動的コンテンツを提供していないバックエンド(Cloud Storage バケット)に限定する必要があります。