控制 CloudFront 快取錯誤的時間長度 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

控制 CloudFront 快取錯誤的時間長度

根據預設,CloudFront 會每 10 秒快取錯誤回應。CloudFront 然後將物件的下一個請求提交給您的原始伺服器,以查看導致錯誤的問題是否已解決,並且請求的物件是否可使用。

您可以指定錯誤快取持續時間 錯誤快取最短 TTL 給每個 CloudFront 快取的 4xx 和 5xx 狀態碼。(如需詳細資訊,請參閱 CloudFront 快取的 HTTP 4xx 和 5xx 狀態碼。) 當您指定持續時間時,請注意以下事項:

  • 如果您指定的錯誤快取持續時間不長,則 CloudFront 轉送到原始伺服器的請求,會比如果您指定較長的持續時間時來的多。針對 5xx 錯誤,這可能會讓原本導致原始伺服器傳回錯誤的問題加劇。

  • 當您的原始伺服器傳回物件的錯誤時,CloudFront 使用錯誤回應或自訂錯誤頁面來回應物件的請求,直到錯誤快取持續時間過後。如果您指定很長的錯誤快取持續時間,則 CloudFront 可能需要很長的時間使用錯誤回應或自訂錯誤頁面來持續回應請求,到物件再次可用之後。

注意

您可以建立自訂錯誤頁面以取得 HTTP 狀態碼 416 (不滿足請求範圍),當原始伺服器傳回狀態碼 416 給 CloudFront 時,您可以變更 CloudFront 傳回給檢視器的 HTTP 狀態碼 (如需詳細資訊,請參閱「CloudFront 傳回的變更回應代碼」。) 然而,CloudFront 不會快取狀態碼 416 回應,因此,即使您為狀態碼 416 指定 Error Caching Minimum TTL (快取最小 TTL 時發生錯誤) 的值,CloudFront 也不會使用它。

如果您想要控制 CloudFront 快取個別物件錯誤的時間長度,您可以配置原始伺服器新增適用的標頭給該物件的錯誤回應。

如果原始伺服器新增 Cache-Control: max-ageCache-Control: s-maxage 指示詞,或 Expires 標頭:CloudFront 將快取在標頭或 Error Caching Minimum TTL (錯誤快取最短 TTL) 中較大值的錯誤回應。

注意

Cache-Control: max-ageCache-Control: s-maxage 值不得大於為擷取的錯誤頁面所設定之快取行為的 Maximum TTL (最大 TTL) 值。

如果原始伺服器新增其他 Cache-Control 指示詞或未新增標頭:CloudFront 將快取Error Caching Minimum TTL (錯誤快取最短 TTL )值的錯誤回應。

如果物件的 4xx 或 5xx 狀態碼的到期時間超過您想要的時間,且物件可以再次使用,則您可以使用請求的物件 URL 使快取的錯誤碼失效。如果原始伺服器傳回多個物件的錯誤回應,則您需要個別使每一個物件失效。如需有關使物件失效的詳細資訊,請參閱使檔案失效以移除內容

如果您已為 S3 儲存貯體原始伺服器啟用快取,且您在 CloudFront 分佈中設定錯誤快取最短 TTL 為 0 秒,您仍然會看到 S3 原始伺服器錯誤的錯誤快取最短 TTL 為 1 秒。CloudFront 會這麼做,以保護原始伺服器免受 DDoS 攻擊。這不適用於其他類型的原始伺服器。