キャッシュの無効化(キャッシュ パージとも呼ばれます)は、キャッシュに保存されたコンテンツが無効であることを宣言するプロセスです。これにより、エントリはキャッシュから削除され、次にコンテンツが要求されたときに送信元サーバーから補充されます。
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 バイトを超えてはいけない
- キャッシュ済みオブジェクトごとに合計 1 KiB(1,024 バイト)のタグ名を超えてはいけない
- オブジェクトあたり 10 個のタグを超えてはいけない(メディア 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
は、無効にするキャッシュ エントリのホスト名に置き換えます。任意のホスト名と一致するには、ホストフラグを省略します。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 に記録されます。
制限事項
無効化の頻度には制限があります。無効化のレート制限を超えると、HTTP 429
エラー メッセージとステータス RESOURCE_EXHAUSTED
が表示されます。
無効化する対象のサイズに制限はありません。たとえば、/images/my-image.png
の無効化は 1 回と計算されます。/images/*
の無効化も 1 回と計算されます。
この動作は、Cloud CDN の動作とは異なります。Cloud CDN では、1 分あたり 1 回の無効化をサポートしています。