PowerCMS X Q&A

PowerCMS Xを用いてWebサイトを構築する際の技術的なヒントや解決策をご紹介します。

AWS_S3プラグインを利用しAmazon S3・CloudFrontでコンテンツを配信する場合、キャッシュに保持される期間はどうなりますか?

CloudFrontがオブジェクトをキャッシュする期間の指定については、まずAmazonの下記ドキュメントをご覧ください。

CloudFrontのキャッシュ時間はオリジンHTTPヘッダーの「Cache-Control: max-age」により設定できるのですが、 AWS_S3プラグインはS3にオブジェクトを配置する際、メタデータ「Cache-Control」を設定しています。初期値は86400(1日)ですが、プラグイン設定の「キャッシュ有効期限」において一括で変更、もしくは拡張子毎に変更が可能です。

例えば下記のようにキャッシュ有効期限を設定すると、テキストファイルのメタデータにはCache-Control: max-age=30が設定されます。

default=86400,txt=30

S3でオブジェクトのメタデータを表示した画面

この状況でテキストファイルに対しリクエストを発行したところ、レスポンスヘッダーの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パスを越える無効化リクエストには料金が発生します。キャッシュ有効期限設定等は慎重に検討する必要があります。

関連するQ&A