快取失效 (有時稱為「快取清除」) 是指宣告快取內容無效的程序。這會導致快取中的項目遭到移除,並在下次要求內容時從原始伺服器重新填入。
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-Tag
HTTP 標頭,並將標記指定為以半形逗號分隔的值清單。 - 根據回應的 HTTP 狀態碼、
Content-Type
HTTP 回應標頭中的 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-Tag
HTTP 回應標頭中傳送的快取標記會傳送至用戶端。如要避免將這些資訊傳送至用戶端,請在routeRule
上使用responseHeadersToRemove
功能,移除Cache-Tag
標頭。如需範例,請參閱自訂標頭說明文件。
內建標記
回應會自動套用下列快取標記,以便根據狀態碼、MIME 類型或內容擷取來源,支援無效內容。您不需要在來源回應中指定這些標記。
標記 | 詳細資料 |
---|---|
status=HTTP_STATUS_CODE
|
舉例來說,您可以在無效要求中指定 |
content-type=MIME_TYPE
|
舉例來說,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
身分和存取權管理角色都具備此權限。
範例
以下範例說明如何讓 Media CDN 服務的快取回應失效。
您可以在單一無效要求中結合 host
、path
和 tags
欄位,以便讓特定內容組無效。
依主機無效
主控台
- 前往 Google Cloud 控制台的「Media CDN」頁面。
- 按一下 [Services] (服務) 標籤。
- 按一下所需服務。
- 按一下「Cache invalidation」(快取撤銷) 分頁標籤。
- 如要依主機名稱撤銷快取,請在「Host」中指定主機名稱,除非您想針對所有主機名稱撤銷路徑。主機名稱不得包含
*
。 - 按一下「撤銷」,然後點選「確認」,表示您希望 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」(快取撤銷) 分頁標籤。
- 如要依標記驗證快取,請針對「快取標記」指定一或多個快取撤銷標記。請使用空格或半形逗號分隔標記。您最多可以新增 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/*
也算作一次撤銷。