まず押さえる3層
- ブラウザキャッシュ 2) CDN/エッジ 3) オリジン
ベストマッチ
最短で課題解決する一冊
この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。
ETagと条件付きGET
// app/api/items/[id]/route.ts
export async function GET(req: Request, { params }: { params: { id: string } }) {
const item = await db.find(params.id);
const etag = `W/"${item.version}"`;
if (req.headers.get('if-none-match') === etag) return new Response(null, { status: 304 });
return Response.json(item, { headers: { ETag: etag, 'Cache-Control': 'max-age=60, stale-while-revalidate=300' } });
}さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
SWRの考え方(短期新鮮+裏で更新)
Cache-Control: max-age=60, stale-while-revalidate=30060秒までは新鮮、期限切れでも5分はキャッシュを返しつつ裏で更新。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
静的/準動的/動的の切り分け
- 静的:
immutable長期キャッシュ - 準動的:
max-age + swrで高速化 - 動的:
no-storeだが一部断片はキャッシュ化(段階的キャッシュ)
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
段階的キャッシュ(HTMLとデータ)
- HTMLは短期キャッシュ、データAPIをSWRで分離
- OGP/メタなど変化の少ない要素は長期化
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
CDNとの連携
- パス/ヘッダでキャッシュキーを明確化
- 認証付きはパブリックキャッシュ不可(Cookieバインドor鍵付き)
まとめ
「ETag+SWR+段階的キャッシュ」を組み合わせれば、整合性を維持しつつ体感速度を大きく改善できます。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
この記事をシェア





