いい質問です。
「Webサーバのキャッシュ」と一口にいっても、どの層のキャッシュか によって「画面ごと」「ユーザごと」「アクセスごと」の扱いが変わります。
1. サーバサイドのキャッシュ
(1) ページキャッシュ(画面ごと)
* 静的ファイル(HTML, CSS, JS, 画像など)は URLごと(画面ごと)にキャッシュ されます。
* 例: `/index.html` にアクセスがあれば、その生成済みのファイルをキャッシュに置き、他のユーザも同じキャッシュを利用。
* 特徴: 高速化しやすいが、ユーザ固有の内容はキャッシュできない。
(2) アプリケーションキャッシュ(ユーザごと)
* ログイン後のページやユーザ専用のダッシュボードなどは、ユーザごとにキャッシュ することもあります。
* 例: 「ユーザAのマイページ」と「ユーザBのマイページ」は別キャッシュ。
* 特徴: メモリ使用量は増えるが、DBアクセスの削減になる。
(3) クエリ結果キャッシュ(アクセスパターンごと)
* DBの検索結果やAPIレスポンスを リクエスト条件(クエリごと)にキャッシュ。
* 例: 「東京の天気」「大阪の天気」をキャッシュ、それぞれ同じリクエストには再利用。
* 特徴: データの有効期限(TTL)が重要。
2. クライアントサイド(ブラウザ・CDN)のキャッシュ
* ブラウザやCDNは基本的に URL単位(画面ごと・リソースごと) にキャッシュ。
* ヘッダ(`Cache-Control`, `ETag`, `Vary` など)で挙動を制御できる。
* ユーザが違っても、同じリソースなら共通キャッシュを使うのが基本。
3. まとめ
* 画面ごと(URLごと) → 静的コンテンツ、共通ページ