1. 認証とキャッシュの基本原則
Authorizationヘッダ付きリクエストは共有キャッシュ対象外(RFC準拠)Set-Cookieを返すレスポンスは、不用意にパブリックキャッシュさせない- 個別化が絡む場合は
Cache-Control: privateまたはno-storeを検討
ベストマッチ
最短で課題解決する一冊
この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。
2. Varyの爆発(キャッシュ断片化)
Vary: Accept-Language, Accept-Encoding, Originなどが多いほどキーが増殖- 最小限の
Varyに抑え、CDNキー(パス/クエリ/ヘッダ)を明示的に設計
Key = scheme + host + path + canonical(query[allowlist]) + headers[allowlist]さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
3. キー正規化とクエリ許可リスト
- 無関係なクエリ(
utm_*など)をキーから除外 - 重要なクエリのみ許可(例:
page, sort, tag)
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
4. Cache Poisoning対策
X-Forwarded-Proto/Host等をキーに含める or 正規化- ヘッダによる動的分岐は
Varyを忘れない - リダイレクト先を正規化(オープンリダイレクト回避)
5. SWRと個別化の両立(段階的キャッシュ)
- ベースHTML/共通データはSWRで高速化
- ユーザー固有はクライアントフェッチ or Edgeで差し込み(ESI/フラグメント)
// app/page.tsx(概念):共通はSSG/ISR、ユーザー固有はクライアントでフェッチ
export default async function Page() {
const common = await getCommonCacheable(); // revalidate:60
return <Shell common={common} />;
}さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
6. CDN/エッジでの注意
- Cookieバインド or 署名クエリで鍵付きキャッシュ(パブリックに混ぜない)
stale-while-revalidateとstale-if-errorを積極活用
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
7. ありがちな事故と対処
- GETで状態変更 → キャッシュ破綻(必ずPOST/CSRF保護)
Cache-Control: publicで個人情報を返却 → データ漏洩(private/no-store)Vary漏れで誤配信 → キーに必要なヘッダを必ず含める
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
8. チェックリスト
- 共有キャッシュ対象にしてよいレスポンスか?
- キーは許可リストで正規化されているか?
- 個別化部分を分離できているか?
- SWRと安全性のバランスは取れているか?
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
まとめ
鍵は「キー設計」。個別化は分離し、SWRで“速さ”を担保しつつ、誤配信と漏洩を未然に防ぎましょう。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
この記事をシェア





![[作って学ぶ]ブラウザのしくみ──HTTP、HTML、CSS、JavaScriptの裏側 (WEB+DB PRESS plusシリーズ)](https://m.media-amazon.com/images/I/41upB6FsPxL._SL500_.jpg)