1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudfront max-ageディレクティブ

Posted at

Cache-Control: max-age ディレクティブは、CloudFront や ブラウザなどのキャッシュ機構に対してこのコンテンツは何秒間キャッシュしてよいかを指示する HTTP ヘッダーです。


max-age の基本

Cache-Control: max-age=3600

これは、「このレスポンスは、取得後3600秒(=1時間)までは再取得せずキャッシュを使ってよい」という意味です。


✅ CloudFront との関係

CloudFront はオリジンからのレスポンスに Cache-Control ヘッダーが含まれている場合、以下のように動作します:

ヘッダー設定 CloudFrontのキャッシュ動作
Cache-Control: max-age=N N秒間、CloudFrontでキャッシュ
Cache-Control: no-cache キャッシュはするが、毎回オリジンに検証
Cache-Control: no-store キャッシュしない
Cache-Control: public 共有キャッシュ(CloudFront含む)を許可
Cache-Control: private ブラウザなどのユーザー専用キャッシュのみ

✅ 使用例:長めのキャッシュ設定

Cache-Control: public, max-age=86400
  • すべての中継キャッシュ(CloudFront含む)が 1日(86400秒)キャッシュ可能。

✅ CloudFront キャッシュ期間の優先順位

CloudFront がオブジェクトをどれくらいキャッシュするかを判断する優先度:

  1. オリジンの Cache-Control: max-age
  2. オリジンの Expires ヘッダー(max-age より優先度は低い)
  3. ディストリビューションのキャッシュポリシー設定(明示的に上書き可能)

✅ CloudFront キャッシュポリシーで上書きする場合

CloudFront 側でオリジンのヘッダーを無視して max-age を上書きするには、キャッシュポリシーで TTL を設定します:

  • 最小 TTL(Minimum TTL)
  • 最大 TTL(Maximum TTL)
  • デフォルト TTL(Default TTL)

例:デフォルトで 1 時間キャッシュし、最長でも 1 日キャッシュ

Default TTL: 3600
Min TTL: 0
Max TTL: 86400

✅ 補足:更新頻度に応じた設定

  • 静的ファイル(画像、CSS、JS など):max-age=31536000(1年)+バージョニング(?v=2など)
  • 動的コンテンツや頻繁に変わるAPIレスポンス:max-age=0, no-cache などで都度取得
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?