撤銷快取內容

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

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

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

舉例來說,您可以在無效要求中指定 status=404,藉此讓所有快取的 HTTP 404 回應失效。

content-type=MIME_TYPE

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

舉例來說,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 身分和存取權管理角色都具備此權限。

範例

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

您可以在單一無效要求中結合 hostpathtags 欄位,以便讓特定內容組無效。

依主機無效

主控台

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

    前往 Media CDN

  2. 按一下 [Services] (服務) 標籤。
  3. 按一下所需服務。
  4. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。
  5. 如要依主機名稱撤銷快取,請在「Host」中指定主機名稱,除非您想針對所有主機名稱撤銷路徑。主機名稱不得包含 *
  6. 按一下「撤銷」,然後點選「確認」,表示您希望 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. 如要依標記驗證快取,請針對「快取標記」指定一或多個快取撤銷標記。請使用空格或半形逗號分隔標記。您最多可以新增 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/* 也算作一次撤銷。