💫
Cache-Control早見表
概要
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