CloudFront のキャッシュがキャッシュポリシーのデフォルト TTL より前に失効した原因を教えてください
困っている内容
CloudFront ディストリビューションのキャッシュポリシーに CachingOptimized [1] を使用しています。
オリジン側ではキャッシュ有効期間(TTL) を指定していないため、アクセスした際オリジンの更新が反映されるのは、デフォルトの TTL である 86400 秒 (24 時間) 後だと認識していました。
しかし、実際には以下のような挙動が確認されました。
- オリジン更新後 30 分:更新内容が反映されていない (キャッシュされている)
- オリジン更新後 約 20 時間:更新内容が反映されている (キャッシュが失効している)
デフォルト TTL の 24 時間より前にキャッシュが失効し、オリジンの更新が反映された理由を教えてください。
回答
オリジンが Cache-Control: max-age や Expires ヘッダーを返さない場合、CachingOptimized ポリシーでは 86,400 秒 (24 時間) キャッシュされることが期待されます。
一方で、頻繁にリクエストされないオブジェクトのキャッシュは、より人気のあるコンテンツのためのスペースを確保するため、指定したキャッシュ保持期間の経過前に削除される場合があります。[2]
エッジロケーションに頻繁にリクエストされないファイルがあれば、CloudFront は、頻繁にリクエストされるようになったファイル用にスペースを確保するために、そのファイルを削除する (そのファイルの有効期限が切れる前に削除する) 場合があります。











