CSR(クライアントサイドレンダリング)
JSを使用してクライアント(ブラウザ側)でレンダリングを行う
- デメリット
- JSのサイズが大きくなる
- ユーザーのデバイススペック次第で初回表示に時間がかかる
- SEOに不利(クローラーがJSを実行しない場合、内容が読み取れない)
SSG(スタティックサイトジェネレーション)
サーバーにあらかじめビルドしたHTMLを置いてAPIでfetchも済ましておく方法
- メリット
- CDNにキャッシュさせるとSSRより高速な配信が可能
- 性能およびセキュリティの向上(動的要素が少ないため)
- デメリット
- 多くのページが存在するときにビルドの時間がかかる
- データが更新された場合に再ビルドするまでページの内容が更新されない
SSR(サーバーサイドレンダリング)
リクエストがきたときにサーバーで毎回HTMLを作る
- メリット
- 初回表示が速い(サーバーが事前にHTMLを生成するため)
- SEOに有利(クローラーがHTMLを直接読み取れる)
- デメリット
- サーバー負荷が高くなりがち
- レスポンスが遅延する可能性がある(サーバーでのレンダリング処理が必要なため)
ISR(インクリメンタルサイトリジェネレーション)
SSGと同じくサーバーにあらかじめビルドしたHTMLを置いておく方法。
一定の間隔で自動的に再ビルドする。
- メリット
- SSGの高速な配信と、最新データへの自動更新が可能
- 導入が比較的簡単
- デメリット
- キャッシュの管理が少し複雑になる
- 更新間隔が長い場合、リアルタイム性が欠ける
ISG (インクリメンタルスタティックジェネレーション)
SSGの改良版
- 未生成のページに対してリクエストがあった際、データを取得していない空のHTMLと、JSが返されブラウザ側でデータをfetchしてHTMLを構築
- 1のリクエストの際、同時にサーバー側でも同様のfetchが行われる
- 2回目以降のアクセスではサーバー側で構築されたHTMLが返却される
- メリット
- 未知のページでも即座に対応できる
- ページ生成の時間が最初のリクエストでのみ発生するため、ユーザー体験が向上
- デメリット
- 最初のリクエストが若干遅くなる
- サーバーへの負荷が一時的に集中する可能性がある