ISR: Incremental Static Regeneration
ISR(インクリメンタル静的再生成)とは
Definition
ISR(Incremental Static Regeneration:インクリメンタル静的再生成)とは、Next.jsが提供する機能で、静的生成(SSG)の高速性とサーバーサイドレンダリング(SSR)の動的な更新を組み合わせた方式です。一定時間(revalidate)ごとにページを再生成してキャッシュを更新します。
ISRを使うことで、ブログ記事やECの商品ページを静的ファイルとして配信しながら、定期的に最新データに更新できます。完全静的生成より柔軟で、完全SSRよりも高速です。
Key Points
知っておくべきポイント
ISRの設定方法(Next.js App Router)
ページファイルに export const revalidate = 3600 を追加するだけで、1時間(3600秒)ごとにページを再生成するISRが有効になります。0を設定すると動的レンダリング(毎回サーバーで生成)になります。
ISRとSSG・SSR・CSRの比較
SSG(静的生成)はビルド時のみページ生成でコンテンツ更新不可・最高速度 / ISRは定期的に再生成・高速かつ更新可能 / SSRはリクエストごとに生成・常に最新だが遅い / CSRはクライアントで生成・初期表示遅いがインタラクティブ性高い。ISRは速度と更新性のバランスが取れた現実的な選択肢です。
オンデマンドISR(revalidatePath)の活用
Next.jsのServer ActionsまたはRoute Handlersからrevalidatepath()・revalidateTag()を呼び出すことで、特定のページやデータを即時に再生成できます。CMSからの記事更新を検知してWebhookでNext.jsのAPIを叩き、更新されたページだけを再生成するオンデマンドISRが現在のベストプラクティスです。
ISRとSEOの相性
ISRで生成されたページは静的HTMLとして配信されるため、クローラーが容易にインデックスできます。また表示速度が速くCore Web Vitals(特にLCP)の改善に貢献します。ページ内容が定期的に更新されるブログ・ECでは、ISRによって常に最新コンテンツをクローラーに提供できます。SEOとパフォーマンスの両立において最も効果的なレンダリング方式の一つです。
FAQ