快取撤銷 (有時稱為「快取清除」) 是指宣告快取內容無效的程序。這會導致快取中的項目遭到移除,然後在下次要求內容時從原始伺服器重新填入。
Media CDN 支援多種選取要失效內容的方式,如下所示:
- 主機和網址路徑
- 網址前置字元 (萬用字元)
- 快取標記,包括
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 \
|
注意:
- 單一撤銷要求最多可指定 10 個快取標記。
- 您可以在單一撤銷要求中合併
host、path和tags。系統會將其視為布林值AND。 - 指定多個快取標記時,系統會將這些標記視為布林值
OR。舉例來說,如果您指定--tags="status=404,origin=staging-origin",則快取標記為status=404的「所有」回應都會失效,快取標記為origin=staging-origin的「所有」回應也會失效。
快取標記
快取標記 (或代理鍵) 可讓您根據任意中繼資料撤銷內容。
這些標記的定義如下:
- 在來源回應中設定
Cache-TagHTTP 標頭,並以逗號分隔的清單指定標記。 - 內建標記,根據回應的 HTTP 狀態碼、
Content-TypeHTTP 回應標頭中的 MIME 類型,或擷取回應的來源名稱。
在單一撤銷要求中指定多個標記時,系統會將這些標記視為布林值 OR。
請見如下範例:
您有下列快取物件:
- 快取物件 #1,標記為
status=200、content-type=video/mp4 - 快取物件 #2,標記為
status=404、content-type=text/plain - 快取物件 #3,標記為
status=200、content-type=application/x-mpegurl
- 快取物件 #1,標記為
您提出撤銷物件的要求,並指定
tags="status=200,content-type=text/plain"結果:三個快取物件同時遭到撤銷。這是為了避免必須指定所有可能的標記組合,其中有些組合可能不明。
注意:
- 預設快取標記不會納入面向用戶端的回應,因為這些標記反映的是現有標頭 (例如狀態行或 Content-Type) 或內部設定詳細資料。
- 原始伺服器在
Cache-TagHTTP 回應標頭中傳送的快取標記會傳送至用戶端。如要避免將這些標頭傳送至用戶端,請在routeRule上使用responseHeadersToRemove功能移除Cache-Tag標頭。如需範例,請參閱自訂標頭說明文件。
內建代碼
系統會自動為回應套用下列快取標記,以便根據狀態碼、MIME 類型或擷取內容的來源,使內容失效。您不需要在原始伺服器回應中指定這些標記。
| 標記 | 詳細資料 |
|---|---|
status=HTTP_STATUS_CODE
|
系統會根據快取回應傳回的 HTTP 狀態碼設定 舉例來說,您可以在撤銷要求中指定 |
content-type=MIME_TYPE
|
系統會根據 Content-Type HTTP 回應標頭中設定的 MIME 類型,設定 舉例來說,HLS 播放清單的 MIME 類型為 這樣就能撤銷特定類型的內容。 |
origin=ORIGIN_NAME
|
系統會根據擷取內容的來源名稱設定
|
快取標記限制
快取標記有下列限制:
- 每個標記不得超過 120 個位元組
- 每個快取物件的標記名稱總長度不得超過 4 KiB (4096 位元組)
- 每個物件不得超過 50 個標記,不包括 Media CDN 新增的預設標記
- 必須是有效的 HTTP 權杖名稱,如 HTTP RFC 7230 第 3.2.6 節所定義
- 不得包含內建的
status=、origin=或content-type=前置字元 (系統會忽略這些前置字元)。
如果標籤超出這些限制或不符合這些規定,系統會忽略這些標籤。在某些情況下 (例如回應標頭過大),回應會失敗且不會快取。
權限
networkservices.EdgeCacheServices.invalidateCache權限可控管 invalidateCache API 的存取權。這項權限包含在 networkservices.edgeCacheAdmin 和 networkservices.edgeCacheUser Identity and Access Management 角色中。
範例
下列範例說明如何使 Media CDN 服務的快取回應失效。
您可以在單一撤銷要求中合併 host、path 和 tags 欄位,撤銷特定內容集。
依主機撤銷
控制台
- 前往 Google Cloud 控制台的「Media CDN」頁面。
- 按一下 [Services] (服務) 標籤。
- 按一下所需服務。
- 點選「Cache invalidation」(快取撤銷) 分頁標籤。
- 如要依主機撤銷快取,請在「Host」(主機) 部分指定主機名稱,除非要撤銷所有主機名稱的路徑。主機名稱不得包含
*。 - 按一下「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"
撤銷與主機相關聯的所有內容可能會有風險,並影響效能。建議提供特定路徑或相關快取標記,縮小失效範圍。
依路徑撤銷
控制台
- 前往 Google Cloud 控制台的「Media CDN」頁面。
- 按一下 [Services] (服務) 標籤。
- 按一下所需服務。
- 點選「Cache invalidation」(快取撤銷) 分頁標籤。
- 如要依路徑撤銷快取,請在「Path」(路徑) 部分指定路徑和檔案名稱,例如
/videos/funny.mp4或/segments/e94a6b1f731/*。 - 按一下「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" 會使與該路徑相符的快取回應 (如有) 失效。
依快取標記撤銷
控制台
- 前往 Google Cloud 控制台的「Media CDN」頁面。
- 按一下 [Services] (服務) 標籤。
- 按一下所需服務。
- 點選「Cache invalidation」(快取撤銷) 分頁標籤。
- 如要依標記驗證快取,請在「Cache tags」(快取標記) 中,指定要撤銷快取的標記。請使用空格或半形逗號分隔標記。最多可新增 10 個快取標記以供撤銷。
- 按一下「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/* 也算一次撤銷。