キャッシュの無効化(キャッシュ パージとも呼ばれます)は、キャッシュに保存されたコンテンツが無効と宣言されるプロセスです。これにより、エントリはキャッシュから削除され、次にコンテンツが要求されたときに送信元サーバーから補充されます。
Media CDN では、次のように、無効にするコンテンツを選択する複数の方法がサポートされています。
- ホストと URL パス
- URL 接頭辞(ワイルドカード)
- キャッシュタグ(
status
、origin
、content-type
の組み込みタグを含む)
これらの無効化パラメータを組み合わせることで、特定のキャッシュ済みレスポンスをターゲットにし、後続のキャッシュ フィルでの送信元の負荷を最小限に抑えることができます。
サポートされている無効化構文
サポートされている無効化構文は次のとおりです。
タイプ | 構文 | 例 |
---|---|---|
ホストの無効化 | 指定したホストのキャッシュ済みレスポンスを無効にします。 |
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
パスの無効化 | 指定されたパスまたはパス接頭辞のキャッシュ済みレスポンスを無効にします。 |
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
HTTP ステータス コード、元の名前、または MIME タイプでのキャッシュタグの無効化 |
一致するタグでキャッシュ済みレスポンスを無効にします。複数のタグはブール値 OR として扱われます。 |
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
注:
- 1 つの無効化リクエストで、最大 10 個のキャッシュタグを指定できます。
- 1 つの無効化リクエストで、
host
、path
、tags
を組み合わせることができます。ブール値AND
として扱われます。 - 複数のキャッシュタグが指定されている場合、それらはブール値
OR
として扱われます。たとえば、--tags="status=404,origin=staging-origin"
を指定した場合、status=404
のキャッシュタグがあるすべてのレスポンスが無効になり、origin=staging-origin
のキャッシュタグがあるすべてのレスポンスも同様です。
キャッシュタグ
キャッシュタグ(またはサロゲートキー)を使用すると、任意のメタデータに基づいてコンテンツを無効にすることができます。
これらのタグは次のように定義されます。
- 値のカンマ区切りのリストとして指定されるタグを使用して、送信元のレスポンスに
Cache-Tag
HTTP ヘッダーを設定する。 - レスポンスの HTTP ステータス コード、
Content-Type
HTTP レスポンス ヘッダーの MIME タイプ、またはレスポンスが取得された送信元の名前に基づく組み込みタグ。
1 つの無効化リクエストで複数のタグが指定されている場合、それらはブール値 OR
として扱われます。
次に例を示します。
次のキャッシュ オブジェクトがあります。
- タグ
status=200
、content-type=video/mp4
が付いているキャッシュ オブジェクト #1 - タグ
status=404
、content-type=text/plain
が付いているキャッシュ オブジェクト #2 - タグ
status=200
、content-type=application/x-mpegurl
が付いているキャッシュ オブジェクト #3
- タグ
tags="status=200,content-type=text/plain"
を使用してオブジェクトを無効にするリクエストを発行します結果: 3 つのキャッシュ オブジェクトはすべて同時に無効になります。これは、可能なすべてのタグの組み合わせ(一部が不明な可能性がある)を指定することを避けるためです。
注:
- デフォルトのキャッシュタグは、既存のヘッダー(ステータス行や Content-Type など)または内部構成の詳細を反映するため、クライアント側のレスポンスに含まれません。
Cache-Tag
HTTP レスポンス ヘッダーで送信元から送信されたキャッシュタグがクライアントに送信されます。これらのヘッダーがクライアントに送信されないようにするには、routeRule
のresponseHeadersToRemove
機能を使用してCache-Tag
ヘッダーを削除します。例については、カスタム ヘッダーのドキュメントをご覧ください。
組み込みタグ
レスポンスには、ステータス コード、MIME タイプ、コンテンツを取得した送信元に基づいてコンテンツを無効にするために、次のキャッシュタグが自動的に適用されます。これらのタグはオリジン レスポンスで指定する必要はありません。
タグ | 詳細 |
---|---|
status=HTTP_STATUS_CODE
|
たとえば、無効化リクエストで |
content-type=MIME_TYPE
|
たとえば、HLS 再生リストの MIME タイプは これにより、特定の種類のコンテンツを無効にできます。 |
origin=ORIGIN_NAME
|
|
キャッシュタグの制限事項
キャッシュタグには次の制限があります。
- タグあたり 120 バイトを超えてはいけない
- キャッシュ済みオブジェクトごとに合計 4 KiB(4,096 バイト)のタグ名を超えてはいけない
- オブジェクトあたり 50 個のタグを超えてはいけない(メディア CDN によって追加されたデフォルトタグを除く)
- HTTP RFC 7230 のセクション 3.2.6 で定義されている有効な HTTP トークン名でなければならない
- 組み込みの接頭辞
status=
、origin=
、content-type=
は含めてはならない(無視される)。
これらの制限または要件を満たしていないタグは無視されます。レスポンス ヘッダーが大きすぎる場合など、レスポンスが失敗し、キャッシュに保存されない場合があります。
権限
networkservices.EdgeCacheServices.invalidateCache
権限は、invalidateCache
API へのアクセスを制御します。この権限は、Identity and Access Management のロール networkservices.edgeCacheAdmin
と networkservices.edgeCacheUser
に含まれています。
例
次の例は、Media CDN サービスのキャッシュ済みレスポンスを無効にする方法を示しています。
1 つの無効化リクエストで host
、path
、tags
フィールドを組み合わせて、特定のコンテンツセットを無効にできます。
ホストにより無効化する
コンソール
- Google Cloud コンソールの [メディア CDN] ページに移動します。
Media CDN に移動 - [Services] タブをクリックします。
- サービスをクリックします。
- [キャッシュの無効化] タブをクリックします。
- 無効にするパスパターンに、ホスト名、次にパスを入力します。たとえば、
media.example.com/cats
やmedia.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"
パスにより無効化する
コンソール
- Google Cloud コンソールの [メディア CDN] ページに移動します。
Media CDN に移動 - [Services] タブをクリックします。
- サービスをクリックします。
- [キャッシュの無効化] タブをクリックします。
- 無効にするパスパターンに、パスを入力します。たとえば、
/videos/funny.mp4
や/segments/e94a6b1f731/*
です。
gcloud
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --path=PREFIX
以下を置き換えます。
SERVICE_NAME
を Edge Cache Service の名前に置き換えます。HOST
は、無効にするキャッシュ エントリのホスト名に置き換えます。任意のホスト名と一致させるには、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 に記録されます。
制限事項
無効化の頻度には制限があります。無効化レートの上限を超えると、ステータス RESOURCE_EXHAUSTED
の HTTP 429
エラー メッセージが返されます。
無効化する対象のサイズに制限はありません。たとえば、/images/my-image.png
の無効化は 1 回と計算されます。/images/*
の無効化も 1 回と計算されます。
この動作は、Cloud CDN の動作とは異なります。Cloud CDN では、1 分あたり 1 回の無効化がサポートされています。