ブラウザキャッシュ

  • Expires ヘッダー (強)
  • Cache-Control ヘッダー (強)
  • Last-Modified ヘッダー (弱)
  • ETag ヘッダー (弱)

上記4種類のヘッダーがブラウザキャッシュの設定で利用できるHTTPヘッダーです。これらのヘッダーはそれぞれ強いキャッシュと弱いキャッシュです。
ブラウザキャッシュについての備忘録 | ブログ | UiDev 2021

ETag - external storage 1

Cache-Control ヘッダ

Web配信のキャッシュ戦略についてまとめてみた 2024 参考になる

2種類のCache-Control
ブラウザの要求時と応答時の2つで用途で、Cache-Controlヘッダーは異なる意味に扱われます。
続・HTTPキャッシュを使いこなして、Webアプリを快適に(1) | IIJ Engineers Blog 2023

Cache-Control

Cache-Controlヘッダがないときもブラウザがキャッシュする!?

no-cache

2. no-cache
オリジンサーバーの確認無しに勝手にキャッシュしてはいけない。つまり、勝手に再利用するな!毎回聞きに来い!ノー、キャッシュ!!
キャッシュさせたらあかーん!ヘッダーの設定方法 - IDCF テックブログ

Cache-Control: no-cache はキャッシュしないわけではない
Cache-Control: max-age=0, must-revalidate は Cache-Control: no-cache と書いても同じです。
Netlifyのデフォルトキャッシュ設定はどう振る舞う? | DevelopersIO

キャッシュサーバ対策

プロキシキャッシュ対策
HTTP/1.1 にはこの問題に対処するための Cache-Control ヘッダが用意されている。次のような Cache-Control ヘッダをHTTPレスポンスに記述することによって、Webアプリケーションからブラウザに送るコンテンツが、途中の経路上でむやみにキャッシュに記録されたり再利用されたりしないように、プロキシサーバやキャッシュサーバに指示するというものである。

  • Cache-Control: private

Webサーバから返されるコンテンツがただ一人のユーザのためのものであることを示す。このコンテンツは、複数のユーザが共有されるキャッシュに記録されるべきではないことを表している。ただし、これは、一人のユーザのみが利用するキャッシュ(ブラウザのキャッシュ等)への記録を禁じるものではない。Cache-Control: private のみが指定されている場合、何らかのキャッシュへの記録が行われるおそれがある。

  • Cache-Control: no-store

このヘッダは、Webサーバから返されてくるコンテンツをキャッシュに記録するな、という指示である。

  • Cache-Control: no-cache

一見「キャッシュを使うな」のように見えるこのヘッダが実際に意味するところは少々ニュアンスが異なる。このヘッダの意味は、いちどキャッシュに記録されたコンテンツは、現在でも有効か否かを本来のWebサーバに問い合わせて確認がとれない限り再利用してはならない、という意味である。

  • Cache-Control: must-revalidate

このヘッダは、キャッシュに記録されているコンテンツが現在も有効であるか否かをWebサーバに必ず問い合わせよ、という指示である。
これらのヘッダを適宜取捨選択して使用することになるが、これらをすべて指定して次のようにしても構わない。

  Cache-Control: private, no-store, no-cache, must-revalidate

https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html

Cache-Control: public

共有キャッシュは通常 public を指定せずともキャッシュしますが、Authorization ヘッダが付与されいるときなど、コンテンツがパーソナライズされている恐れがあるときにはキャッシュしない実装である場合があります。public は、そういった制約を無視して共有キャッシュに保存してよいことを明示します。
HTTPキャッシュの基礎の基礎 - Mirai Translate TECH BLOG 2024 参考になる