本頁面提供如何搭配 Cloud CDN 使用 negative caching 的操作說明。Negative caching 可為每個狀態碼設定不同的存留時間。
這麼做的目的是針對一般錯誤或重新導向,套用精細的快取控制。這麼做可以減少來源的負載量,並縮短回應延遲時間來提升使用者體驗。
事前準備
瞭解快取模式和靜態內容。
確認已啟用 Cloud CDN;如需操作說明,請參閱「使用 Cloud CDN」。
請視需要更新至最新版本的 Google Cloud CLI:
gcloud components update
狀態碼和預設存留時間
Negative caching 適用於特定狀態碼,詳情請參閱下表。
Cloud CDN 會對這些狀態碼套用下列預設存留時間:
| 狀態碼 | 意義 | 存留時間 |
|---|---|---|
| HTTP 300 | 多個選擇 | 10 分鐘 |
| HTTP 301 和 308 | 永久重新導向 | 10 分鐘 |
| HTTP 302 和 307 | 暫時重新導向 | 根據預設不會快取 |
| HTTP 404 | 找不到 | 120 秒 |
| HTTP 405 | 找不到方法 | 60 秒 |
| HTTP 410 | 消失 | 120 秒 |
| HTTP 451 | 基於法律原因而無法使用 | 120 秒 |
| HTTP 501 | 未實作 | 60 秒 |
您可以透過 negative caching,為指定的 HTTP 狀態碼設定快取存留時間,藉此覆寫這些預設值。
設定 negative caching
Negative caching 可讓您設定服務,以快取失敗和成功結果。這樣一來,Cloud CDN 就能防範產生錯誤 (例如找不到 404) 的要求,就像防範產生成功回應的要求一樣。
控制台
- 前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
- 按一下外部應用程式負載平衡器的名稱。
- 按一下「Edit」(編輯)。
- 在「Backend configuration」(後端設定) 中選取後端,然後按一下「Edit」(編輯)。
- 確認已選取「Enable Cloud CDN」(啟用 Cloud CDN)。
- 按一下視窗底部的「Advanced configurations」(進階設定)。
- 按一下「Enable negative caching」(啟用 negative caching)。
- 按一下「Add negative caching policy」(新增 negative caching 政策)。
- 輸入 HTTP 狀態碼。
- 選取「Cache time to live (TTL)」(快取存留時間 (TTL))。
- 按一下「Update」(更新)。
- 再按一下「Update」(更新)。
gcloud
如為後端 bucket,請使用 gcloud compute backend-buckets create 或 gcloud compute backend-buckets update 指令,並加上 --negative-caching 旗標。
如為後端服務,請使用 gcloud compute backend-services create 或 gcloud compute backend-services update 指令,並加上 --negative-caching 旗標。
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
--negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
--negative-caching
如要只針對兩個特定錯誤回應啟用 negative caching,請設定狀態碼 404 的回應為快取 60 秒,狀態碼 405 的回應為快取 120 秒。
gcloud compute backend-services update BACKEND_SERVICE_NAME \
--negative-caching \
--cache-mode=CACHE_ALL_STATIC \
--default-ttl=86400 \
--negative-caching-policy='404=60,405=120'
api
如為後端 bucket,請使用 Method: backendBuckets.insert 或 Method: backendBuckets.update API 呼叫。
如為後端服務,請使用 Method: backendServices.insert 或 Method: backendServices.update API 呼叫。
請使用下列其中一個 API 呼叫:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
在 JSON 要求主體中新增下列程式碼片段:
"cdnPolicy": {
"negativeCaching": ON,
"negativeCachingPolicy": [
{
"code": STATUS_CODE,
"ttl": TTL_SECONDS
}
]
}
必須啟用 negative caching,才能設定 negativeCachingPolicy 設定。如果您省略這項政策並啟用 negativeCaching,Cloud CDN 會使用「狀態碼和預設存留時間」中列出的預設值。
指定 negative caching 政策時,請務必為「所有」要快取的回應代碼指定快取存留時間。如果存在政策,Cloud CDN 就不會套用任何預設 negative caching。
您可以為 STATUS_CODE 指定下列 HTTP 狀態碼: