為什麼 Amazon CloudFront 沒有在我指定的時間內快取檔案?

1 分的閱讀內容
0

我想要指定 Amazon CloudFront 分佈快取物件的時間長度,因此我在原始伺服器上新增了 Cache-Control 或 Expires 標頭。不過,CloudFront 並未在我指定的時間內快取物件,或者 CloudFront 根本不會快取。

解決方法

確認您在 Cache-ControlExpires 標頭上設定的指令不會彼此衝突。最佳實務是使用 Cache-Control max-age 指令,而不是 Expires 標頭。如果您同時指定兩者的值,則 CloudFront 只會使用您為 Cache-Control max-age 設定的值

確認您在 CloudFront 分佈上設定的最小 TTL預設 TTL最大 TTLCache-ControlExpires 標頭不衝突。

如果這些快取持續時間設定彼此衝突,CloudFront 可能不會在設定的時間內快取物件,或 CloudFront 可能完全不會快取。避免下列彼此衝突的快取持續時間設定範例:

  • 將最大 TTL 設定為 5 分鐘 (300 秒),而 Cache-Control max-age 標頭設定為 1 小時 (3600 秒)。在此情況下,CloudFront 會快取物件 5 分鐘,而不是 1 小時。
  • Cache-Control max-age 標頭設定為 3 小時,而 Expires 標頭設定為 1 個月。在此情況下,CloudFront 會快取物件 3 小時,而不是 1 個月。
  • 將「預設 TTL」、「最小 TTL」和「最大 TTL」設定為 0 秒。在此情況下,CloudFront 始終會驗證其具有來自來源的最新內容。
  • 將「最小 TTL」設定為 60 秒、「預設 TTL」設定為 300 秒,而「最大 TTL」設定為 3600 秒。如果來源未提供快取標頭 (例如 Cache-Control max-ageExpires),則 CloudFront 會以預設 TTL 持續時間快取物件。

**重要事項:**如果您使用快取標頭更新來源資產,則 CloudFront 只有在 CloudFront 向您的來源發出新請求之後,才會反映變更。CloudFront 會在邊緣節點的快取資產到期時向您的來源發出新的請求。然後,您的分佈會收到資產的新請求。若要強制 CloudFront 在快取資產設定到期之前反映更新,請使快取失效

相關資訊

物件快取

管理內容在快取中停留的時間長度 (到期)

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

AWS 官方
AWS 官方已更新 8 個月前