本頁面提供 Cloud CDN 快取撤銷總覽。
什麼是快取撤銷?
物件快取後,通常會保留在快取中,直至到期或遭到移除為止,以便騰出空間存放新內容。您可能會在物件標準到期時間前,從快取中移除物件。您可以要求撤銷快取,強制快取忽略某個物件或一組物件。
快取撤銷 (有時稱為「快取清除」) 是指宣告快取內容無效的程序。這個程序會導致快取中的項目遭到移除,然後在下次要求內容時從後端伺服器重新填入。
Cloud CDN 支援使用快取標記和撤銷比對器 (例如主機和網址路徑) 撤銷要求。
您可以結合這些失效參數,指定特定快取回應,並盡量減少後續快取填充作業的後端負載。
要求快取撤銷之前,請務必確定後端伺服器傳回的內容正確無誤。否則 Cloud CDN 再次要求內容時,可能會快取不正確的內容。
撤銷要求有頻率限制。每分鐘最多可提交 500 個撤銷要求。每項撤銷要求約在 10 秒內生效。
Cloud CDN 不會限制每個要求的物件數量或所有撤銷物件的總大小。
依網址撤銷
每個撤銷要求都會指定一個路徑模式,以識別應撤銷的物件或物件組。路徑模式可以是特定路徑 (例如 /cat.jpg),或是整個目錄結構 (例如 /pictures/*)。以下是路徑模式的適用規則:
- 路徑模式必須以
/開頭。 - 不得包含
?或#。 - 除了
/後的最後一個字元外,不得包含*。 - 如果以
/*/* 結尾,則前面的字串為前置字元,且所有路徑以該前置字元開頭的物件都會遭到撤銷。
路徑模式會與網址的路徑元件進行比對,也就是主機名稱與可能出現的任何 ? 或 # 之間的所有內容。
如果網址含有查詢字串 (例如 /images.php?image=fred.png),就不能選擇撤銷只有查詢字串不同的物件。舉例來說,如果有兩張圖片 (/images.php?image=fred.png 和 /images.php?image=barney.png),則無法只撤銷 fred.png。如要撤銷 images.php 提供的所有圖片,請使用 /images.php 做為路徑模式。
針對單一主機撤銷
快取撤銷會撤銷所有主機名稱的路徑。舉例來說,如果 example.com 和 example2.com 指向同一個負載平衡器,而您撤銷 /images/cat.jpg,則 example.com/images/cat.jpg 和 example2.com/images/cat.jpg 都會遭到撤銷。
您可以指定主機,將撤銷作業限制在其中一個主機上。
依快取標記撤銷
快取標記 (或代理鍵) 可讓您根據任意中繼資料撤銷內容。
這些標記是在後端回應中使用 Cache-Tag HTTP 標頭定義。在 Cache-Tag HTTP 回應標頭中,將來自後端的快取標記傳送至用戶端。
快取標記有下列限制:
- 每個標記不得超過 120 個位元組
- 每個快取物件的標記名稱總長度不得超過 4 KiB (4096 位元組)
- 每個物件不得超過 50 個標記
如果超出這些標記限制,系統就不會快取回應,並在 LoadBalancerLogEntry.cacheDecision 中將這項決定記錄為 RESPONSE_CACHE_TAG_INVALID。
每個撤銷要求最多可指定 10 個快取標記。在單一撤銷要求中指定多個標記時,系統會將這些標記視為邏輯 OR。請參考以下範例,其中包含下列快取物件:
- 快取物件 #1,標記為
js、2020-12-23和prod - 快取物件 #2,標記為
css、2020-11-30和prod - 快取物件 #3,標記為
img、2020-11-30和staging
提出撤銷與 tags="prod,2020-11-30" 相符的物件要求時,所有三個快取物件都會遭到撤銷。這種做法表示,如果想撤銷物件,不需要知道或指定所有可能的標記組合。
若同時指定撤銷比對器和快取標記,撤銷要求只會套用至與撤銷比對器相符的標記物件。請參考以下使用快取物件的範例:
- 快取物件 #1,網址為
https://staging.example.com/img/cat.jpg,標記為a - 快取物件 #2,網址為
https://example.com/img/cat.jpg,標記為a - 快取物件 #3,網址為
https://staging.example.com/js/cat.js,標記為a - 快取物件 #4,網址為
https://staging.example.com/img/logo.jpg,標記為b
提出撤銷主機為 staging.example.com、路徑為 /img/* 且標記為 a 的物件要求時,只有物件 #1 會遭到撤銷。物件 #2、#3 和 #4 分別與主機、路徑或標記不符。
撤銷延遲
Cloud CDN 是分散式系統,因此即使少數快取尚未處理撤銷要求,系統仍可能會回報撤銷作業已完成。這種情況很少發生,且系統會自動修正。
最佳做法
請只撤銷必要項目,因為撤銷項目過多可能會導致快取服務的要求突然暴增,進而影響執行個體或 bucket。
撤銷主要用於例外情況,並不屬於正常工作流程。這項功能不會影響網路瀏覽器快取中的快取副本,也不會影響第三方網際網路服務供應商所操作的快取。
您可以改為主動設定回應的適當到期時間,或是為內容的不同版本使用不同的網址。如需進一步瞭解到期時間,請參閱「到期時間與驗證要求」。
使用 Shared VPC 跨專案參照服務時撤銷快取
快取撤銷是在前端專案中設定,也就是含有負載平衡器轉送規則、目標 Proxy 和網址對應的專案。因此,在使用全域外部應用程式負載平衡器搭配 Shared VPC 跨專案參照服務時,服務專案管理員在預設情況下沒有要求快取撤銷的必要權限。
只有在前端專案中具備設定負載平衡器資源的 Identity and Access Management (IAM) 角色主體,才能提出快取撤銷要求,例如 Compute 網路管理員角色 (roles/compute.networkAdmin)。
負責控管個別專案中後端服務佈建作業的服務管理員,可以與前端專案的負載平衡器管理員合作,為跨專案服務提出快取撤銷要求。如果是網址重寫作業,請確保撤銷作業符合用戶端傳送的重寫前主機和路徑。