技術的備忘録

基本自分用備忘録

Next.js レンダリング手法まとめ

Next.jsの4つのレンダリング手法について

静的サイト生成(SSG: Static Site Generation)

  • ビルド時にAPIを呼び出しデータを取得、ページを描画して静的ファイルとして生成する
  • 生成した静的ファイルはビルド結果に保持され、ページアクセス時にはその静的ファイルをクライアントに送る

メリット

  • 初期描画が高速(静的ファイルをクライアントに渡すだけ)
  • SEOに対して有効

デメリット

  • データ取得がビルド時のみで、古いデータが表示される

使い時

  • ビルド後に表示内容が変わらないページ
  • 初期描画後にデータを取得・表示するページ

クライアントサイドレンダリング(CSR: Client Side Rendering)

  • ブラウザ側で初期描画を行う
  • Reactアプリっぽい描画方法

メリット

  • リアルタイム性が高い

デメリット

  • SEOに対して有効ではない

使い時

  • リアルタイム性が重要なページ

サーバーサイドレンダリング(SSR: Server Side Rendering)

  • ページにアクセスするたびに、サーバー側でgetServerSidePropsが呼び出され、その結果のProps(データ)を元にサーバー側でページの描画を行い、クライアントで表示する

メリット

  • 最新のデータでページの初期描画ができる
  • SEOに対して有効らしい

デメリット

  • アクセスごとにサーバーで処理を行うため、描画時間が長くなる可能性がある

使い時

  • 常に最新のデータを表示させたいページ

インクリメンタル静的再生成(ISR: Incremental Static Regeneration)

  • SSGのように事前にページを生成しておく
  • クライアントへ渡す静的ファイルに有効期限を設定でき、切れていた場合のアクセスに対してはgetStaticPropsを実行・ページ描画をし、サーバーに保存しているページデータを新しくする

メリット

  • そこそこ最新のデータを表示しつつ、初期描画が高速

デメリット

  • 常に最新のデータというわけではない