💫

Cache-Control早見表

2025/02/16に公開

概要

Cache-Control のレスポンスディレクティブの表を自分用に。
MDNを見れば良いのですが直感的に分からない部分があるため、噛み砕いたものをメモしておきたいと考えました。

ディレクティブ 挙動 備考
max-age オリジンがレスポンスを生成した時刻を起点としたキャッシュの期限をn秒で指定 いわゆるTimeToLive(TTL)を指定
s-max-age CDNやProxyなど経路上のキャッシュにのみ有効なmax-ageを指定 s は shared の s。max-ageと同時に指定される場合、経路上ではs-max-ageが優先される
stale-while-revalidate キャッシュを再検証している間、古いキャッシュの再利用を許可する
stale-if-error サーバーがエラー(500、502、503、504)でレスポンスを返したときに、キャッシュを返すことを許可する
no-store キャッシュを保存することを許可しない キャッシュが行われる際に評価される
no-cache キャッシュ保存は可能だが、再利用の前に必ずオリジンサーバーに問い合わせを行い、キャッシュが有効であることを確認する キャッシュが使われる際に評価される
must-revalidate 期限切れのレスポンスはオリジンと再検証できなければ使用してはならないと示す。
proxy-revalidate must-revalidate と同等だが、共有キャッシュにのみ適用(privateキャッシュには適用されない)
immutable キャッシュが変更されないことを示す。(=更新されない前提のリソースであることを明示する)URLを変更する以外で不変。 キャッシュの有効期限が切れても再検証を行わずそのまま利用できる
public 通常ヘッダーフィールドに Authorization を持つリクエストに対するレスポンスは、共有キャッシュに保存しないが、このディレクティブを指定すると強制的に共有キャッシュに保存する。 未指定の場合、Authorizationを持つ場合などを除き、共有キャッシュになるため基本的には指定不要。(Authorizationは共有したくないはず)
private プライベートキャッシュ(ブラウザーのローカルキャッシュなど)にのみ保存できることを示す CDNなどの共有のキャッシュには使用不可なセンシティブな情報など
no-transform レスポンスの内容を変換すべきではないことを示す。 変換とはオリジンとクライアントの間に仲介者が存在するとき、転送サイズを小さくするために画像を変換するなどを指す

Discussion