キャッシュの無効化

キャッシュの無効化(キャッシュ パージとも呼ばれます)は、キャッシュに保存されたコンテンツを無効にすることを宣言するプロセスです。これにより、エントリはキャッシュから削除され、次にコンテンツが要求されたときに送信元サーバーから補充されます。

Media CDN は、次のように、無効にするコンテンツを選択するための複数の方法をサポートしています。

  • ホストと URL パス
  • URL 接頭辞(ワイルドカード)
  • キャッシュタグ(statusorigincontent-type の組み込みタグを含む)

これらの無効化パラメータを組み合わせることで、特定のキャッシュ済みレスポンスをターゲットにし、後続のキャッシュ フィルでの送信元の負荷を最小限に抑えることができます。

サポートされている無効化構文

サポートされている無効化構文は次のとおりです。

Type 構文
ホストの無効化 指定したホストのキャッシュ済みレスポンスを無効にします。 gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"
パスの無効化 指定されたパスまたはパス接頭辞のキャッシュ済みレスポンスを無効にします。 gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/content/1234/hls/*"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/videos/funny.mp4"
HTTP ステータス コード、元の名前、または MIME タイプでのキャッシュタグの無効化 一致するタグでキャッシュ済みレスポンスを無効にします。複数のタグはブール値 OR として扱われます。 gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,origin=staging-origin"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="content-type=application/x-mpegurl"

注:

  • 1 つの無効化リクエストで、最大 10 個のキャッシュタグを指定できます。
  • 1 つの無効化リクエストで、hostpathtags を組み合わせることができます。これらはブール値 AND として扱われます。
  • 複数のキャッシュタグが指定されている場合、それらはブール値 OR として扱われます。たとえば、--tags="status=404,origin=staging-origin" を指定した場合、status=404 のキャッシュタグがあるすべてのレスポンスが無効になり、origin=staging-origin のキャッシュタグがあるすべてのレスポンスも同様です。

キャッシュタグ

キャッシュタグ(またはサロゲートキー)を使用すると、任意のメタデータに基づいてコンテンツを無効にすることができます。

これらのタグは次のように定義されます。

  • 値のカンマ区切りのリストとして指定されるタグを使用して、送信元のレスポンスに Cache-Tag HTTP ヘッダーを設定する。
  • レスポンスの HTTP ステータス コード、Content-Type HTTP レスポンス ヘッダーの MIME タイプ、またはレスポンスが取得された送信元の名前に基づく組み込みタグ。

1 つの無効化リクエストで複数のタグが指定されている場合、それらはブール値 OR として扱われます。

次に例を示します。

  • 次のキャッシュ オブジェクトがあります。

    • タグ status=200content-type=video/mp4 が付いているキャッシュ オブジェクト #1
    • タグ status=404content-type=text/plain が付いているキャッシュ オブジェクト #2
    • タグ status=200content-type=application/x-mpegurl が付いているキャッシュ オブジェクト #3
  • tags="status=200,content-type=text/plain" を使用してオブジェクトを無効にするリクエストを発行します

  • 結果: 3 つのキャッシュ オブジェクトはすべて同時に無効になります。これは、可能なすべてのタグの組み合わせ(一部が不明な可能性がある)を指定することを避けるためです。

注:

  • デフォルトのキャッシュタグは、既存のヘッダー(ステータス行や Content-Type など)または内部構成の詳細を反映するため、クライアント側のレスポンスに含まれません
  • Cache-Tag HTTP レスポンス ヘッダーで送信元から送信されたキャッシュタグがクライアントに送信されます。これらがクライアントに送信されないようにするには、routeRuleresponseHeadersToRemove 機能を使用して Cache-Tag ヘッダーを削除します。例については、カスタム ヘッダーのドキュメントをご覧ください。

組み込みタグ

レスポンスには、ステータス コード、MIME タイプ、コンテンツを取得した送信元に基づいてコンテンツを無効にするために、次のキャッシュタグが自動的に適用されます。送信元のレスポンスで、これらのタグを指定する必要はありません。

タグ 詳細
status=HTTP_STATUS_CODE

status キャッシュタグは、キャッシュ済みレスポンスの返された HTTP ステータス コードに基づいて設定されます。

たとえば、無効化リクエストで status=404 を指定すると、キャッシュ済みのすべての HTTP 404 レスポンスが無効になります。

content-type=MIME_TYPE

content-type キャッシュタグは、Content-Type HTTP レスポンス ヘッダーで設定された MIME タイプに基づいて設定されます。

たとえば、HLS プレイリストの MIME タイプは application/x-mpegURL または vnd.apple.mpegURL です。

これにより、特定の種類のコンテンツを無効にすることができます。

origin=ORIGIN_NAME

origin キャッシュタグは、コンテンツを取得した送信元の名前に基づいて設定されます。

origin 値は .routing.routeRules[].origin の値を参照し、誤って構成されている、または動作に問題がある可能性のある送信元サーバーからのコンテンツを無効にします。

キャッシュタグの制限

キャッシュタグには次の制限があります。

  • タグあたり 120 バイトを超えてはいけない
  • キャッシュ済みオブジェクトごとに合計 1 KiB(1,024 バイト)のタグ名を超えてはいけない
  • オブジェクトあたり 10 個のタグを超えてはいけない(メディア CDN によって追加されたデフォルトタグを除く)
  • HTTP RFC 7230 のセクション 3.2.6 で定義されている有効な HTTP トークン名でなければならない
  • 組み込みの接頭辞 status=origin=content-type= は含めてはならない(無視される)。

これらの制限または要件を満たしていないタグは無視されます。レスポンス ヘッダーが大きすぎる場合など、レスポンスが失敗し、キャッシュに保存されない場合があります。

権限

networkservices.EdgeCacheServices.invalidateCache 権限は、invalidateCache API へのアクセスを制御します。この権限は、networkservices.edgeCacheAdminnetworkservices.edgeCacheUser の Identity and Access Management ロールに含まれています。

次の例は、Media CDN サービスのキャッシュ済みレスポンスを無効にする方法を示しています。

hostpathtags の各フィールドを 1 つの無効化リクエスト内で組み合わせることで、特定のコンテンツのセットを無効にできます。

ホストにより無効化する

コンソール

  1. Google Cloud コンソールの [メディア CDN] ページに移動します。
    Media CDN に移動
  2. [Services] タブをクリックします。
  3. サービスをクリックします。
  4. [キャッシュの無効化] タブをクリックします。
  5. 無効にするパスパターンに、ホスト名、次にパスを入力します。たとえば、media.example.com/catsmedia.example.com/cat* です。ホスト名に * を含めることはできません。

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host=HOST

以下を置き換えます。

  • SERVICE_NAME を Edge Cache Service の名前に置き換えます。
  • HOST は、無効にするキャッシュ エントリの完全なホスト名に置き換えます。

次に例を示します。

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"

パスにより無効化する

コンソール

  1. Google Cloud コンソールの [メディア CDN] ページに移動します。
    Media CDN に移動
  2. [Services] タブをクリックします。
  3. サービスをクリックします。
  4. [キャッシュの無効化] タブをクリックします。
  5. 無効にするパスパターンに、パスを入力します。たとえば、/videos/funny.mp4/segments/e94a6b1f731/* です。

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path=PREFIX

以下を置き換えます。

  • SERVICE_NAME を Edge Cache Service の名前に置き換えます。
  • HOST は、無効にするキャッシュ エントリのホスト名に置き換えます。任意のホスト名で照合するには、ホストフラグを省略します。
  • PREFIX は、無効にするキャッシュ エントリと一致する末尾が「*」のパス接頭辞に置き換えます。

次に例を示します。

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/segments/e94a6b1f731/*"

末尾の * 文字を省略して、正確なパスを無効にすることもできます。--path="/videos/funny.mp4" を渡すと、そのパスに一致するキャッシュ済みレスポンス(存在する場合)が無効になります。

キャッシュタグにより無効にする

コンソール

キャッシュタグによる無効化は、Google Cloud コンソールではサポートされていません。

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags=TAGS

以下を置き換えます。

  • SERVICE_NAME を Edge Cache Service の名前に置き換えます。
  • TAGS は、タグのカンマ区切りのリストに置き換えます。

次に例を示します。

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,content-type=text/plain"

無効化のレイテンシ

Media CDN の数千ものロケーションにわたるキャッシュ無効化は、通常、グローバルに 1 分以内に完了します。

場合によっては、システムの負荷、接続性、無効化されるコンテンツの量によっては、無効化に時間がかかることがあります。

ロギング

監査ログが有効になっている場合、無効化の呼び出しは Cloud Logging に記録されます。

制限事項

無効化の頻度には制限があります。1 分間に実行できる無効化は 10 件までです。その頻度を超えると、HTTP 429 エラー メッセージとステータス RESOURCE_EXHAUSTED が表示されます。

無効化する対象のサイズに制限はありません。たとえば、/images/my-image.png の無効化は 1 回と計算されます。/images/* の無効化も 1 回と計算されます。

この動作は、Cloud CDN での動作とは異なります。Cloud CDN は 1 分あたり 1 回の無効化をサポートしています。