本頁面說明如何自訂 Cloud CDN 快取金鑰。
在您變更快取金鑰設定之後,如有新的要求開始使用與舊有快取金鑰項目不同的快取金鑰,快取命中率可能會突然下降。同理,如果新要求使用的金鑰與舊有快取金鑰相同,變更快取金鑰建立者則不一定會撤銷快取項目。如要讓現有的快取項目失效,請參閱「撤銷快取內容」。
事前準備
本頁面假設您對 Cloud CDN、Cloud CDN 快取金鑰和達到負載平衡的後端服務已有基本認識。建議您先參閱這些頁面,再繼續操作。
啟用 Cloud CDN 並自訂快取金鑰
這些操作說明會為負載平衡的後端服務啟用 Cloud CDN,並自訂快取金鑰。如果您尚未擁有可用於做為來源的負載平衡器,請參閱外部應用程式負載平衡器說明文件,瞭解如何建立負載平衡器。
後端值區不會在快取索引鍵中加入通訊協定或主機,因為這些不會影響 Cloud Storage 值區中物件的參照方式。不過,這些要求包含一組專屬於 Cloud Storage 的查詢字串參數,可能會影響回應,並且可透過可自訂的參數名稱清單擴充。
控制台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要更新的來源名稱。
按一下 [編輯]。
如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。
如要展開「快取效能」部分,請按一下「下一步」。
在「快取金鑰」部分,選取「自訂」。
在「快取重要元件」部分,系統預設會選取所有元件。取消勾選要從快取鍵中排除的所有元件。
按一下 [完成]。
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
如要從快取索引鍵中排除一或多個元件,請在 cdnPolicy
的 cacheKeyPolicy
區段中,為 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 的現有後端服務快取索引鍵。
控制台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要更新的來源名稱。
按一下 [編輯]。
如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。
如要展開「快取效能」部分,請按一下「下一步」。
在「快取金鑰」部分,選取「自訂」。
在「Cache key components」區段中,選取「Protocol」、「Host」和「Query string」核取方塊。
按一下 [完成]。
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
如要將一或多個元件加入快取鍵,請在 cdnPolicy
的 cacheKeyPolicy
部分為 backendServices
資源指定設定選項。
將以下程式碼片段新增至 JSON 要求主體:
"cdnPolicy": { "cacheKeyPolicy": [ { "includeProtocol": true, "includeHost": true, "includeQueryString": true } ] }
更新快取金鑰,以便使用查詢字串參數的納入或排除清單
這些操作說明會設定 Cloud CDN 快取金鑰,以便使用包含清單或排除清單搭配查詢字串參數。
控制台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要更新的來源名稱。
按一下 [編輯]。
如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。
如要展開「快取效能」部分,請按一下「下一步」。
在「快取金鑰」部分,選取「自訂」。
在「快取鍵值元件」部分,選取「查詢字串」核取方塊。接著,選取下列任一選項:
如要指定必須是快取金鑰一部分的查詢字串參數,請選取「僅限所選項目」。
如要將所列查詢字串參數以外的所有參數加入快取金鑰中,請選取「Include all but selected」(包含所選項目以外的全部項目) 。
按一下「新增參數」,然後指定參數。
按一下 [完成]。
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
如要為後端服務指定包含或排除清單,請在 cdnPolicy
的 cacheKeyPolicy
部分,為 backendServices
資源指定查詢字串參數。
如要指定包含清單,請在 JSON 要求主體中加入下列程式碼片段:
"cdnPolicy": { "cacheKeyPolicy": [ { "queryStringWhitelist": [QUERY_STRINGS] } ] }
將 QUERY_STRINGS 替換為以半形逗號分隔的查詢字串參數清單。
如要指定排除清單,請加入下列程式碼片段:
"cdnPolicy": { "cacheKeyPolicy": [ { "queryStringBlacklist": [QUERY_STRINGS] } ] }
更新快取金鑰以使用 HTTP 標頭
這些操作說明會將 Cloud CDN 快取金鑰設為使用 HTTP 標頭,其中可包含允許的自訂變數。
控制台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要更新的來源名稱。
按一下 [編輯]。
如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。
如要展開「快取效能」部分,請按一下「下一步」。
在「快取金鑰」部分,選取「自訂」。
在「Cache key components」(快取鍵元素) 區段中,選取「HTTP headers」(HTTP 標頭) 核取方塊。
如要指定一或多個 HTTP 標頭,請按一下「新增 HTTP 標頭」。
按一下 [完成]。
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。
控制台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要更新的來源名稱。
按一下 [編輯]。
如果來源已連結多個負載平衡器,請從「編輯」選單中選取要更新的負載平衡器。
如要展開「快取效能」部分,請按一下「下一步」。
在「快取金鑰」部分,選取「自訂」。
在「快取鍵元素」部分,選取「命名 Cookie」核取方塊。
如要指定一或多個 Cookie,請按一下「Add named cookie」。
按一下 [完成]。
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
如要為後端服務指定包含或排除清單,請在 cdnPolicy
的 cacheKeyPolicy
部分,為 backendServices
資源指定查詢字串參數。
如要指定包含清單,請在 JSON 要求主體中加入下列程式碼片段:
"cdnPolicy": { "cacheKeyPolicy": [ { "includeNamedCookies": [NAMED_COOKIES] } ] }
將 NAMED_COOKIES 替換為以半形逗號分隔的查詢字串參數清單。
後續步驟
- 如要確認 Cloud CDN 是否從快取提供回應,請參閱快取的記錄和指標。