このページでは、Cloud CDN でキャッシュ モードを変更する手順について説明します。キャッシュ モードでは、Cloud CDN がコンテンツをキャッシュに保存する方法を構成できます。
始める前に
キャッシュ モードと静的コンテンツについて確認します。
Cloud CDN が有効になっていることを確認します。手順については、Cloud CDN の使用をご覧ください。
必要に応じて、次のコマンドで Google Cloud CLI を最新バージョンに更新します。
gcloud components update
キャッシュ モードの設定
Cloud CDN 対応バックエンドのキャッシュ モードを構成するには、次の操作を行います。
Console
- Google Cloud Console で、[ロード バランシング] ページに移動します。
- 外部アプリケーション ロードバランサの名前をクリックします。
- [編集] をクリックします。
- [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
- [Cloud CDN を有効にする] が選択されていることを確認します。
- [キャッシュ モード] で、次のいずれかのオプションを選択します。
- 静的コンテンツをキャッシュする(推奨): 静的コンテンツは、ユーザーごとに変更されないウェブアセットです。静的コンテンツはレスポンスの
Content-Type
に基づきます。詳細については、静的コンテンツをご覧ください。 - Cache-Control ヘッダーに基づいて送信元の設定を使用する: レスポンス ヘッダーに有効なキャッシュ ディレクティブを指定してレスポンスをキャッシュに保存します。
- すべてのコンテンツを強制的にキャッシュする:
private
またはno-store
ディレクティブを無視し、送信元から提供されたコンテンツをすべてキャッシュに保存します。
- 静的コンテンツをキャッシュする(推奨): 静的コンテンツは、ユーザーごとに変更されないウェブアセットです。静的コンテンツはレスポンスの
- [保存] をクリックします。
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 バケット)に限定する必要があります。