撤銷快取內容

快取撤銷 (有時稱為「快取清除」) 是指宣告快取內容無效的程序。這會導致快取中的項目遭到移除,然後在下次要求內容時從原始伺服器重新填入。

Media CDN 支援多種選取要失效內容的方式,如下所示:

  • 主機和網址路徑
  • 網址前置字元 (萬用字元)
  • 快取標記,包括 statusorigincontent-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"

注意:

  • 單一撤銷要求最多可指定 10 個快取標記。
  • 您可以在單一撤銷要求中合併 hostpathtags。系統會將其視為布林值 AND
  • 指定多個快取標記時,系統會將這些標記視為布林值 OR。舉例來說,如果您指定 --tags="status=404,origin=staging-origin",則快取標記為 status=404 的「所有」回應都會失效,快取標記為 origin=staging-origin 的「所有」回應也會失效。

快取標記

快取標記 (或代理鍵) 可讓您根據任意中繼資料撤銷內容。

這些標記的定義如下:

  • 在來源回應中設定 Cache-Tag HTTP 標頭,並以逗號分隔的清單指定標記。
  • 內建標記,根據回應的 HTTP 狀態碼、Content-Type HTTP 回應標頭中的 MIME 類型,或擷取回應的來源名稱。

在單一撤銷要求中指定多個標記時,系統會將這些標記視為布林值 OR

請見如下範例:

  • 您有下列快取物件:

    • 快取物件 #1,標記為 status=200content-type=video/mp4
    • 快取物件 #2,標記為 status=404content-type=text/plain
    • 快取物件 #3,標記為 status=200content-type=application/x-mpegurl
  • 您提出撤銷物件的要求,並指定 tags="status=200,content-type=text/plain"

  • 結果:三個快取物件同時遭到撤銷。這是為了避免必須指定所有可能的標記組合,其中有些組合可能不明。

注意:

  • 預設快取標記不會納入面向用戶端的回應,因為這些標記反映的是現有標頭 (例如狀態行或 Content-Type) 或內部設定詳細資料。
  • 原始伺服器在 Cache-Tag HTTP 回應標頭中傳送的快取標記會傳送至用戶端。如要避免將這些標頭傳送至用戶端,請在 routeRule 上使用 responseHeadersToRemove 功能移除 Cache-Tag 標頭。如需範例,請參閱自訂標頭說明文件。

內建代碼

系統會自動為回應套用下列快取標記,以便根據狀態碼、MIME 類型或擷取內容的來源,使內容失效。您不需要在原始伺服器回應中指定這些標記。

標記 詳細資料
status=HTTP_STATUS_CODE

系統會根據快取回應傳回的 HTTP 狀態碼設定 status 快取標記。

舉例來說,您可以在撤銷要求中指定 status=404,撤銷所有快取的 HTTP 404 回應。

content-type=MIME_TYPE

系統會根據 Content-Type HTTP 回應標頭中設定的 MIME 類型,設定 content-type 快取標記。

舉例來說,HLS 播放清單的 MIME 類型為 application/x-mpegURLvnd.apple.mpegURL

這樣就能撤銷特定類型的內容。

origin=ORIGIN_NAME

系統會根據擷取內容的來源名稱設定 origin 快取標記。

origin 值會參照 .routing.routeRules[].origin 的值,讓您從設定錯誤或可能運作異常的原始伺服器,使內容失效。

快取標記限制

快取標記有下列限制:

  • 每個標記不得超過 120 個位元組
  • 每個快取物件的標記名稱總長度不得超過 4 KiB (4096 位元組)
  • 每個物件不得超過 50 個標記,不包括 Media CDN 新增的預設標記
  • 必須是有效的 HTTP 權杖名稱,如 HTTP RFC 7230 第 3.2.6 節所定義
  • 不得包含內建的 status=origin=content-type= 前置字元 (系統會忽略這些前置字元)。

如果標籤超出這些限制或不符合這些規定,系統會忽略這些標籤。在某些情況下 (例如回應標頭過大),回應會失敗且不會快取。

權限

networkservices.EdgeCacheServices.invalidateCache權限可控管 invalidateCache API 的存取權。這項權限包含在 networkservices.edgeCacheAdminnetworkservices.edgeCacheUser Identity and Access Management 角色中。

範例

下列範例說明如何使 Media CDN 服務的快取回應失效。

您可以在單一撤銷要求中合併 hostpathtags 欄位,撤銷特定內容集。

依主機撤銷

控制台

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。

    前往 Media CDN

  2. 按一下 [Services] (服務) 標籤。
  3. 按一下所需服務。
  4. 點選「Cache invalidation」(快取撤銷) 分頁標籤。
  5. 如要依主機撤銷快取,請在「Host」(主機) 部分指定主機名稱,除非要撤銷所有主機名稱的路徑。主機名稱不得包含 *
  6. 按一下「Invalidate」(撤銷),然後點選「Confirm」(確認),表示要 Media CDN 撤銷與主機相符的內容。

gcloud

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

更改下列內容:

  • SERVICE_NAME 替換為 Edge Cache 服務的名稱。
  • HOST,並將其替換為要失效的快取項目的完整主機名稱。

例如:

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

撤銷與主機相關聯的所有內容可能會有風險,並影響效能。建議提供特定路徑或相關快取標記,縮小失效範圍。

依路徑撤銷

控制台

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。

    前往 Media CDN

  2. 按一下 [Services] (服務) 標籤。
  3. 按一下所需服務。
  4. 點選「Cache invalidation」(快取撤銷) 分頁標籤。
  5. 如要依路徑撤銷快取,請在「Path」(路徑) 部分指定路徑和檔案名稱,例如 /videos/funny.mp4/segments/e94a6b1f731/*
  6. 按一下「Invalidate」(撤銷)

gcloud

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

更改下列內容:

  • SERVICE_NAME 替換為 Edge Cache 服務的名稱。
  • HOST,並提供要失效的快取項目主機名稱。如要比對任何主機名稱,請省略主機旗標。
  • PREFIX,且路徑前置字串以「*」結尾,可比對要撤銷的快取項目。

例如:

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

您也可以省略尾端的 * 字元,使確切路徑失效。傳遞 --path="/videos/funny.mp4" 會使與該路徑相符的快取回應 (如有) 失效。

依快取標記撤銷

控制台

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。

    前往 Media CDN

  2. 按一下 [Services] (服務) 標籤。
  3. 按一下所需服務。
  4. 點選「Cache invalidation」(快取撤銷) 分頁標籤。
  5. 如要依標記驗證快取,請在「Cache tags」(快取標記) 中,指定要撤銷快取的標記。請使用空格或半形逗號分隔標記。最多可新增 10 個快取標記以供撤銷。
  6. 按一下「Invalidate」(撤銷)

gcloud

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

更改下列內容:

  • SERVICE_NAME 替換為 Edge Cache 服務的名稱。
  • TAGS,並以逗號分隔的標記清單。

例如:

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

撤銷延遲

Media CDN 遍布全球數千個位置,通常只要一分鐘就能完成快取撤銷作業。

在某些情況下,失效時間可能會較長,具體取決於系統負載、連線和失效內容量。

記錄

如果啟用稽核記錄,系統會將失效呼叫記錄到 Cloud Logging。

限制

撤銷要求有頻率限制。如果超過失效速率限制,系統會顯示 HTTP 429 錯誤訊息,狀態為 RESOURCE_EXHAUSTED

失效內容可以是任何大小。舉例來說,使 /images/my-image.png 失效算是一次失效。撤銷 /images/* 也算一次撤銷。