CloudFrontがオブジェクトをキャッシュする期間の指定については、まずAmazonの下記ドキュメントをご覧ください。
- コンテンツがキャッシュに保持される期間 (有効期限) の管理 - Amazon CloudFront
- Amazon CloudFront (Cache Control編) AWS Black Belt Online Seminar
CloudFrontのキャッシュ時間はオリジンHTTPヘッダーの「Cache-Control: max-age」により設定できるのですが、
AWS_S3プラグインはS3にオブジェクトを配置する際、メタデータ「Cache-Control」を設定しています。初期値は86400
(1日)ですが、プラグイン設定の「キャッシュ有効期限」において一括で変更、もしくは拡張子毎に変更が可能です。
例えば下記のようにキャッシュ有効期限を設定すると、テキストファイルのメタデータにはCache-Control: max-age=30
が設定されます。
default=86400,txt=30
この状況でテキストファイルに対しリクエストを発行したところ、レスポンスヘッダーのX-Cache
の値は以下のようになりました。(CloudFrontのキャッシュポリシーは「Managed-CachingOptimized」…つまり最小TTL 0
、最大TTL 31536000
です。)
- 最初のリクエストでは
Miss from cloudfront
- 30秒以内に再度リクエストを出すと
Hit from cloudfront
- 30秒を経過した後再度リクエストを出すと
Miss from cloudfront
(S3にオブジェクトの更新確認や取得を行うため、オブジェクトが更新されている場合は新しいコンテンツが表示される)
なお、 AWS_CloudFrontプラグイン等を利用し有効期限切れになる前にCloudFrontエッジキャッシュからファイルを削除できますが、 1つのAWS アカウントあたり月間1,000パスを越える無効化リクエストには料金が発生します。キャッシュ有効期限設定等は慎重に検討する必要があります。