自訂快取金鑰

本頁面說明如何自訂 Cloud CDN 快取金鑰。

在您變更快取金鑰設定之後,如有新的要求開始使用與舊有快取金鑰項目不同的快取金鑰,快取命中率可能會突然下降。同理,如果新要求使用的金鑰與舊有快取金鑰相同,變更快取金鑰建立者則不一定會撤銷快取項目。如要讓現有的快取項目失效,請參閱「撤銷快取內容」。

事前準備

本頁面假設您對 Cloud CDNCloud CDN 快取金鑰和達到負載平衡的後端服務已有基本認識。建議您先參閱這些頁面,再繼續操作。

啟用 Cloud CDN 並自訂快取金鑰

這些操作說明會為負載平衡的後端服務啟用 Cloud CDN,並自訂快取金鑰。如果您尚未擁有可用於做為來源的負載平衡器,請參閱外部應用程式負載平衡器說明文件,瞭解如何建立負載平衡器。

後端值區不會在快取索引鍵中加入通訊協定或主機,因為這些不會影響 Cloud Storage 值區中物件的參照方式。不過,這些要求包含一組專屬於 Cloud Storage 的查詢字串參數,可能會影響回應,並且可透過可自訂的參數名稱清單擴充。

控制台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往 Cloud CDN

  2. 按一下要更新的來源名稱。

  3. 按一下 [編輯]

    如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。

  4. 如要展開「快取效能」部分,請按一下「下一步」

  5. 在「快取金鑰」部分,選取「自訂」

  6. 在「快取重要元件」部分,系統預設會選取所有元件。取消勾選要從快取鍵中排除的所有元件。

  7. 按一下 [完成]

gcloud

如要從後端服務的快取鍵中排除一或多個元件,請使用 gcloud compute backend-services update 指令

gcloud compute backend-services update BACKEND_SERVICE \
    --no-cache-key-include-protocol \
    --no-cache-key-include-host \
    --no-cache-key-include-query-string

如要使用後端值區,請使用 gcloud compute backend-buckets update 指令

API

如要從快取索引鍵中排除一或多個元件,請在 cdnPolicycacheKeyPolicy 區段中,為 backendServices 資源指定設定選項。

如為後端服務,請使用 backendServices.update 方法 API 呼叫。

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

如為後端桶,請使用 backendBuckets.update 方法 API 呼叫。

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET

將以下程式碼片段新增至 JSON 要求主體:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "includeProtocol": false,
      "includeHost": false,
      "includeQueryString": false
    }
  ]
}

更新快取金鑰,以便新增通訊協定、主機和查詢字串

根據預設,設定為使用 Cloud CDN 的後端服務會在快取金鑰中加入要求 URI 的所有元件。如果您先前曾指出應排除一或多個元件,可以按照下列步驟再次納入這些元件。

這些操作說明會將通訊協定、主機和查詢字串新增至已啟用 Cloud CDN 的現有後端服務快取索引鍵。

控制台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往 Cloud CDN

  2. 按一下要更新的來源名稱。

  3. 按一下 [編輯]

    如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。

  4. 如要展開「快取效能」部分,請按一下「下一步」

  5. 在「快取金鑰」部分,選取「自訂」

  6. 在「Cache key components」區段中,選取「Protocol」、「Host」和「Query string」核取方塊。

  7. 按一下 [完成]

gcloud

如要在後端服務的快取鍵中新增一或多個元件,請使用 gcloud compute backend-services update 指令。

未指定的標記則保持不變。

gcloud compute backend-services update BACKEND_SERVICE \
    --cache-key-include-protocol \
    --cache-key-include-host \
    --cache-key-include-query-string

API

如要將一或多個元件加入快取鍵,請在 cdnPolicycacheKeyPolicy 部分為 backendServices 資源指定設定選項。

將以下程式碼片段新增至 JSON 要求主體:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "includeProtocol": true,
      "includeHost": true,
      "includeQueryString": true
    }
  ]
}

更新快取金鑰,以便使用查詢字串參數的納入或排除清單

這些操作說明會設定 Cloud CDN 快取金鑰,以便使用包含清單或排除清單搭配查詢字串參數。

控制台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往 Cloud CDN

  2. 按一下要更新的來源名稱。

  3. 按一下 [編輯]

    如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。

  4. 如要展開「快取效能」部分,請按一下「下一步」

  5. 在「快取金鑰」部分,選取「自訂」

  6. 在「快取鍵值元件」部分,選取「查詢字串」核取方塊。接著,選取下列任一選項:

    • 如要指定必須是快取金鑰一部分的查詢字串參數,請選取「僅限所選項目」

    • 如要將所列查詢字串參數以外的所有參數加入快取金鑰中,請選取「Include all but selected」(包含所選項目以外的全部項目)

  7. 按一下「新增參數」,然後指定參數。

  8. 按一下 [完成]

gcloud

如要指定後端服務的包含或排除清單,請使用 gcloud compute backend-services update 指令指定查詢字串參數。

使用這個指令將查詢字串參數 user 設為後端服務的包含清單。

gcloud compute backend-services update BACKEND_SERVICE \
    --cache-key-include-query-string \
    --cache-key-query-string-whitelist user

使用這個指令將查詢字串參數 user 設為後端服務的排除清單。

gcloud compute backend-services update BACKEND_SERVICE \
    --cache-key-include-query-string \
    --cache-key-query-string-blacklist user

使用這個指令,將查詢字串參數 user 設為後端值區的包含清單。

gcloud compute backend-buckets update BACKEND_BUCKET \
    --cache-key-query-string-whitelist user

API

如要為後端服務指定包含或排除清單,請在 cdnPolicycacheKeyPolicy 部分,為 backendServices 資源指定查詢字串參數。

如要指定包含清單,請在 JSON 要求主體中加入下列程式碼片段:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "queryStringWhitelist": [QUERY_STRINGS]
    }
  ]
}

QUERY_STRINGS 替換為以半形逗號分隔的查詢字串參數清單。

如要指定排除清單,請加入下列程式碼片段:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "queryStringBlacklist": [QUERY_STRINGS]
    }
  ]
}

更新快取金鑰以使用 HTTP 標頭

這些操作說明會將 Cloud CDN 快取金鑰設為使用 HTTP 標頭,其中可包含允許的自訂變數

控制台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往 Cloud CDN

  2. 按一下要更新的來源名稱。

  3. 按一下 [編輯]

    如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。

  4. 如要展開「快取效能」部分,請按一下「下一步」

  5. 在「快取金鑰」部分,選取「自訂」

  6. 在「Cache key components」(快取鍵元素) 區段中,選取「HTTP headers」(HTTP 標頭) 核取方塊。

  7. 如要指定一或多個 HTTP 標頭,請按一下「新增 HTTP 標頭」

  8. 按一下 [完成]

gcloud

請使用 gcloud compute backend-services update 指令,並加上 cache-key-include-http-header 選項。

gcloud compute backend-services update BACKEND_SERVICE \
    --cache-key-include-http-header=[HEADER_FIELD_NAMES,...]

HEADER_FIELD_NAMES 替換為以半形逗號分隔的標頭名稱清單。

API

backendServices 資源的 cdnPolicy 區段中,指定快取金鑰的 HTTP 標頭。cacheKeyPolicy

將以下程式碼片段新增至 JSON 要求主體:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "includeHttpHeaders": [HEADER_FIELD_NAMES]
    }
  ]
}

HEADER_FIELD_NAMES 替換為以半形逗號分隔的標頭名稱清單。

如果指定的快取鍵標頭也指定為自訂要求標頭,您就無法使用完整的變數範圍

詳情請參閱「使用要求標頭的自訂變數」一文。

更新快取金鑰以使用已命名的 Cookie

這些操作說明會將 Cloud CDN 快取鍵設為使用 HTTP Cookie。

控制台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往 Cloud CDN

  2. 按一下要更新的來源名稱。

  3. 按一下 [編輯]

    如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。

  4. 如要展開「快取效能」部分,請按一下「下一步」

  5. 在「快取金鑰」部分,選取「自訂」

  6. 在「快取鍵元素」部分,選取「命名 Cookie」核取方塊。

  7. 如要指定一或多個 Cookie,請按一下「Add named cookie」

  8. 按一下 [完成]

gcloud

請使用 gcloud compute backend-services update 指令,並加上 cache-key-include-named-cookie 選項。

gcloud compute backend-services update BACKEND_SERVICE \
    --cache-key-include-named-cookie=[NAMED_COOKIES,...]

NAMED_COOKIES 替換為以半形逗號分隔的命名 Cookie 清單。

API

如要為後端服務指定包含或排除清單,請在 cdnPolicycacheKeyPolicy 部分,為 backendServices 資源指定查詢字串參數。

如要指定包含清單,請在 JSON 要求主體中加入下列程式碼片段:

"cdnPolicy": {
  "cacheKeyPolicy": [
    {
      "includeNamedCookies": [NAMED_COOKIES]
    }
  ]
}

NAMED_COOKIES 替換為以半形逗號分隔的查詢字串參數清單。

後續步驟