使用 negative caching

本頁面提供如何搭配 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) 的要求,就像防範產生成功回應的要求一樣。

控制台

  1. 前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 按一下外部應用程式負載平衡器的名稱。
  3. 按一下「Edit」(編輯)
  4. 在「Backend configuration」(後端設定) 中選取後端,然後按一下「Edit」(編輯)
  5. 確認已選取「Enable Cloud CDN」(啟用 Cloud CDN)
  6. 按一下視窗底部的「Advanced configurations」(進階設定)
  7. 按一下「Enable negative caching」(啟用 negative caching)
  8. 按一下「Add negative caching policy」(新增 negative caching 政策)
    1. 輸入 HTTP 狀態碼
    2. 選取「Cache time to live (TTL)」(快取存留時間 (TTL))
  9. 按一下「Update」(更新)
  10. 再按一下「Update」(更新)

gcloud

如為後端 bucket,請使用 gcloud compute backend-buckets creategcloud compute backend-buckets update 指令,並加上 --negative-caching 旗標。

如為後端服務,請使用 gcloud compute backend-services creategcloud 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.insertMethod: backendBuckets.update API 呼叫。

如為後端服務,請使用 Method: backendServices.insertMethod: 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 狀態碼: