Next概要・SSR, CSR, SSG, ISRまとめ
ReactとNextの違い
React
SPA開発に向いていた。小規模のウェブサイト開発。
CSRを採用。ページの中身だけ変えて、ページは変えない手法。
CSRを採用しており、初回以降の読み込み速度が速いことがメリット。
ただ、デメリットとして初期読み込み速度が遅くなるデメリットがあった
そこで誕生したのがNext.js
Reactと違い、Nextは最初からHTMLが読み込まれていて、JSの動的な部分は後で読み込まれる。
HTMLはサーバーから最初に読み込まれる(プリレンダリング)
Nextのメリットとしては
- 最初からHTMLが表示されてるから離脱率が下がる
- ユーザビリティーが上がることでSEOも上がる
などがあげられる。
Reactはクライアントレンダリング(CSR)、Nextはサーバーサイドレンダリング(SSG、SSR、ISR)を使った開発が行われる。
最近はNextの方が使われることが主流になっている。
それぞれの使いどころ、メリデメ
- React
ページ数の少ないWebサイト(データ可視化サービス、チケット座席指定など)に向いている
クライアント側でjsを読み込み、事足りる
- Next
大規模なWebサイト(ECサイト、ポートフォリオ、個人ブログなど)に向いている
クライアントのPCに依存せずにレンダリングでき、
直観的なルーティング設計ができる
初回の表示速度に優れる、SEOに優れる
APIエンドポイント設計も簡単にできる
SSGとSSR, ISR
- SSG
静的生成。APIからデータを持ってくる場合、それを元にビルド時にHTMLをレンダリング
読み込み速度がめちゃはやい。一方ビルド時しかレンダリングできない。そのあとリクエストがあっても更新できない
使用例:あまり更新の要らないもの、ブログの詳細記事、ECの商品ページ、ドキュメント
- SSR
ユーザがサーバーにリクエストする時にレンダリングする。そのデータをサーバーがプリレンダリングされる。リクエストごとにレンダリング。更新頻度が高いものにつかう。
ブログの全体記事、SNSのタイムライン、ユーザープロフィール
- ISR
SSGとSSRの中間。
SSRではサーバーにリクエストし、レスポンスが返ってくる。
ISRでは、リクエスト時にキャッシュを生成する。CDNにキャッシュされる。
アクセスが多いものに関しては、キャッシュで残してくのが楽。
リバリデートによりキャッシュで残しておく時間を指定できるため、更新頻度はSSGとSSRの中間
使い所はまだ理解しきれていない!!
余談
-
古いキャッシュを送りたくない場合はSWRを使う
-
ページやコンポーネント単位でSSG、SSRなどわけられる
Discussion