TTL の設定とオーバーライドの変更

このページでは、Cloud CDN で TTL オーバーライドを変更する方法について説明します。TTL オーバーライドを使用すると、Cloud CDN によってコンテンツが再検証までにキャッシュに保存される期間を詳細に制御できます。

次の表に、TTL 設定の概要を示します。

  デフォルト TTL 最大 TTL クライアント TTL
構成の理由 更新頻度の低いコンテンツのキャッシュ ヒット率を向上させる 送信元のヘッダーの指定よりも高い頻度で Cloud CDN がコンテンツを再検証する クライアントが Cloud CDN に対してコンテンツの再検証をより頻繁に行うようにする
使用するタイミング 正常なレスポンスの場合、次のいずれかに該当する:
  • キャッシュ モード = FORCE_CACHE_ALL
  • キャッシュ モード = CACHE_ALL_STATICの場合、content-type は静的にキャッシュ可能で、TTL は送信元ヘッダー(max-ages-maxageExpires)により設定されない
以下のすべてに該当する:
  • キャッシュ モード = CACHE_ALL_STATIC
  • TTL は送信元のヘッダー(max-ages-maxageExpires)により設定される
  • 送信元のヘッダーで指定された TTL が TTL の上限値より大きい
次のいずれかに該当する:
  • キャッシュ モード = FORCE_CACHE_ALL、クライアントの TTL 値が Cloud CDN の TTL よりも小さい
  • キャッシュ モード = CACHE_ALL_STATIC、クライアント TTL が送信元のヘッダーで設定された TTL(または、送信元のヘッダー情報がない場合はデフォルトの TTL)よりも小さい
デフォルト値 3,600 秒(1 時間) 86,400 秒(1 日) 3,600 秒(1 時間)
許容最大値 31,622,400 秒(1 年) 31,622,400 秒(1 年) 31,622,400 秒(1 年)
最大 TTL の値以下でなければならない

--default-ttl=0
レスポンスを送信元で再検証する
最大 TTL 以下でなければならない

始める前に

  • キャッシュ モードについて確認します。

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

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

    gcloud components update
    

デフォルトの TTL を設定する

デフォルトの TTL をオーバーライドして、Cloud CDN が送信元のコンテンツを再検証する頻度を下げることで、更新頻度の低いコンテンツのキャッシュ ヒット率を向上させることができます。ただし、アクセス頻度の少ないオブジェクトが、定義された TTL の前にキャッシュから除外される場合があります。

キャッシュ モードが FORCE_CACHE_ALL の場合、デフォルトの TTL は、すべてのレスポンスに設定されている TTL(送信元のヘッダーで TTL が設定されているレスポンスを含む)を上書きします。このモードでは、デフォルトの TTL はクライアントに表示されます。これは、Cloud CDN がクライアントに配信されるレスポンスの public 属性と max-age 属性を設定するためです。

CACHE_ALL_STATIC モードの場合、有効な TTL(max-ages-maxage、または Expires ヘッダー)がないレスポンスに対して送信元から提供されたキャッシュ内のコンテンツにデフォルトの TTL が適用されます。CACHE_ALL_STATIC モードの場合、デフォルトの TTL でクライアントに配信される Cache-Control ヘッダーは変更されません。CACHE_ALL_STATIC モードで Cache-Control ヘッダーを変更するには、クライアント TTL を設定する必要があります。

送信元のヘッダー(USE_ORIGIN_HEADERS)を使用するようにキャッシュ モードを設定すると、Cloud CDN は max-age または s-maxage の送信元のディレクティブ、または Expires ヘッダーを代わりに使用するため、デフォルトの TTL 値は適用されず、設定できません。

コンソール

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

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

  2. 外部アプリケーション ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
  5. [Cloud CDN を有効にする] が選択されていることを確認します。
  6. キャッシュ モードが [静的コンテンツをキャッシュする(推奨)] または [すべてのコンテンツを強制的にキャッシュする] であることを確認します。キャッシュ モードが [Cache-Control ヘッダーに基づいて送信元の設定を使用する] の場合、TTL 値をオーバーライドすることはできません。
  7. [デフォルトの有効期間] で値を選択します。
  8. [保存] をクリックします。

gcloud

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

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

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --default-ttl=DEFAULT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --default-ttl=DEFAULT_TTL

DEFAULT_TTL を 31,622,400 秒(1 年間)以下の値に置き換えます。

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": {
  "defaultTtl": DEFAULT_TTL
}

DEFAULT_TTL を 31,622,400 秒(1 年間)以下の値に置き換えます。

最大 TTL を設定する

最大 TTL は、送信元から配信されるキャッシュ コンテンツに関して Cloud CDN 内で許可される TTL の上限を指定します。

次のいずれかに該当する場合に、レスポンスの TTL に対して最大 TTL によって上限が設定されます。

  • レスポンスは、max-age または s-maxage を最大 TTL 値よりも高い値に設定することを試みます。
  • 今後、レスポンスには cdnPolicy.maxTtl 秒を超える Expires ヘッダーが含まれます。

最大 TTL の設定は、クライアントに送信される max-age の値を変更しません。詳細については、最大クライアント TTL のオーバーライドをご覧ください。最大 TTL の設定は、Cloud CDN がコンテンツのキャッシュへの保存を試行する時間の長さにのみ影響します。

この設定は、キャッシュ モードが CACHE_ALL_STATIC の場合にのみ使用されます。最大許容値は 31,622,400 秒(1 年)です。ただし、アクセス頻度の少ないオブジェクトが、定義された TTL の前にキャッシュから除外される場合があります。

FORCE_CACHE_ALL では、TTL は常にデフォルトの TTL に設定されます。最大 TTL の設定はできません。

コンソール

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

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

  2. 外部アプリケーション ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの構成] でバックエンドを選択し、[編集] をクリックします。
  5. [Cloud CDN を有効にする] が選択されていることを確認します。
  6. キャッシュ モードが [静的コンテンツをキャッシュする(推奨)] になっていることを確認します。
  7. [