本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
選擇要觸發函數的事件
當您決定要用來觸發 Lambda 函數 CloudFront 的事件時,請考慮下列事項:
- CloudFront 我想要快取由 Lambda 函數變更的物件
-
若要快取由 Lambda 函數修改的物件, CloudFront以便 下次請求時可從邊緣位置為物件提供服務,請使用原始伺服器請求或原始伺服器回應事件。
這樣可以降低原始伺服器的負載,減少後續請求的延遲,並降低叫用 Lambda@Edge 在後續請求的費用。
例如,如果您想要新增、移除或變更原始伺服器傳回之物件的標頭,且 CloudFront 想要快取結果,請使用原始伺服器回應事件。
- 我希望函數針對每個請求執行
-
若要針對 CloudFront 接收到分發的每個請求執行 函數,請使用檢視器請求或檢視器回應事件。
原始伺服器請求和原始伺服器回應事件只會在請求的物件未快取在邊緣位置,並將請求 CloudFront 轉送至原始伺服器時發生。
- 我想要函數變更快取金鑰
-
若要變更您用來作為快取基礎的值,請使用檢視器請求事件。
例如,如果函數將 變更為在路徑中URL包含語言縮寫 (例如,由於使用者從下拉式清單中選擇其語言),請使用檢視器請求事件:
-
URL 在檢視器請求 – https://example.com/en/index.html 中
-
URL 當請求來自德國的 IP 地址時 – https://example.com/de/index.html
如果您快取根據 Cookie 或請求標頭,也可以使用檢視器請求事件。
注意
如果函數變更 Cookie 或標頭,請設定 CloudFront 將請求的適用部分轉送至原始伺服器。如需詳細資訊,請參閱下列主題:
-
- 函數會影響原始伺服器的回應
-
若要以影響原始伺服器回應的方式變更請求,請使用原始伺服器請求事件。
一般而言,大多數檢視器請求事件不會轉送至原始伺服器。CloudFront 會使用已在邊緣快取中的物件回應請求。如果函數根據原始伺服器請求事件變更請求,則會 CloudFront 快取對變更原始伺服器請求的回應。