kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Amazon CloudFrontのTTL挙動おぼえがき

TTLの挙動は、これ見るのが一番早い

christina04.hatenablog.com

Cache-Control ヘッダについては、こちらを参照

techblog.lclco.com

なんでこんなにややこしいの

オリジン側の Cache-Control を尊重した上で、CDNではどう振る舞うのか? を考慮しているため……だと思う……

ものすごくざっくりした理解

  • s-max-agemax-ageExpires の順で優先される
  • max-age などが、 MinTTLMaxTTLの範囲であれば、max-age が尊重される
    • max-age が、MinTTL 以下ならば、MinTTL が優先
    • max-age が、MaxTTL 以上ならば、MaxTTL が優先
  • Cache-Controlno-cache, no-store, private のいずれかの場合
    • MinTTL = 0 ならば、キャッシュしない
    • MinTTL > 0 ならば、MinTTL
  • Cache-Control が無い場合、
    • MinTTL = 0 ならば、DefaultTTLDefaultTTL 唯一の登場機会
    • MinTTL > 0 ならば、MinTTL

TTLのデフォルト値

  • MinTTL : 未記載
    • おそらく 0
    • TTLを何も設定しないと、24時間キャッシュされると書かれているので
  • MAXTTL : 1年
  • DefaultTTL : 24時間

docs.aws.amazon.com

オリジンをS3で使う場合

  • デフォルトでは Cache-Control は未指定なので以下のように設定すれば良い。
    • MinTTL=0
    • DefaultTTL=${キャッシュしたい秒数}
    • MaxTTL= 31536000 ← ぶっちゃけどんな値でも問題ないはず

参考

dev.classmethod.jp

docs.aws.amazon.com