0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初学者 - 備忘録】Next.jsにおけるレンダリングの種類

Posted at

Next.jsでは、以下の3つのレンダリングを使用する

  • CSR(クライアントサイドレンダリング)
  • SSR(サーバーサイドレンダリング)
  • SG(静的サイト生成)

CSR - クライアントサイドレンダリング

Client Side Renderingの略。

データフェッチやルーティングのすべてがクライアント上で行われる。
サーバーではなく、クライアント側にコードが全て配信されてからブラウザでコードが実行されて画面が生成される。

※Next.jsの開発ではクライアント側でのみ行いたい処理はuseEffectで囲む。

仕組みの流れ

①クライアントからHTTPリクエストがサーバーに飛ぶ
②リクエストの応じてレンダリング前のTHMLをクライアントに返却
③返ってきたHTMLとjavascriptのコードをもとに画面を構築
④画面構築中に追加の情報が必要であれば、クライアントからAPIサーバーにデータをリクエストを飛ばす
⑤戻り値としてJSONデータが返ってくる
⑥受け取ったデータから画面を構築
FY24_神田のmiro - CSR.jpg

メリット

  • 静的なファイルの配置の身で動く
  • サーバー側の負荷が軽い

デメリット

  • 初期描画に時間がかかる(ブラウザ側ですべてのコードから画面を構築するため)
  • クローラーによってはSEO的な問題あり
クローラーについて

クローラーは、タイトルやメタタグからそのサイトの説明文を作ったりするもの。
検索結果の説明とかに載せるやつを勝手に作ってくれるやつのこと。

Googleは問題ないが、SNS系のクローラーはjavascriptの実行ができないものがあり、うまくタイトルなどを読み込んでくれない場合がある

SSR - サーバーサイドレンダリング

Sever Side Renderingの略。

サーバーにリクエストが着たタイミングで動的にHTMLを生成。
外部APIへのデータの取得やコンポーネントのpropsの値を決定する処理を行い、HTMLを作成してクライアント側に返却する。

仕組みの流れ

①クライアントからHTTPリクエストをサーバーに飛ばす
②サーバーからAPIサーバーにデータを問い合わせ
③必要なデータがJSONファイルなどでサーバー側に返却される
④サーバー側でHTMLを生成
⑤生成されたHTMLがクライアントに返却
FY24_神田のmiro - SSR.jpg

メリット

  • 生成済みのHTMLを取得するのでSEOに強い

デメリット

  • 生成処理をすべてサーバー側でするので負担が大きい
  • HTMLをクライアントに渡すまで時間がかかる

SG - 静的サイト生成

Static Generationの略。

ビルド時にデータフェッチやpropsの値の決定を行い、HTMLを構築する。
クライアントからリクエストされたら、サーバー側で構築することなく、生成済みHTMLを渡す。

仕組みの流れ

①ビルド時にビルド用のコマンドをたたいてHTMLを生成
②生成時にデータが必要な場合はAPIサーバーにリクエストを送信
③返ってきた情報をもとにHTMLを生成
④出来上がったHTMLをサーバーに配置
⑤クライアントからリクエストされたパスに応じて生成済みHTMLを返す
FY24_神田のmiro - SG.jpg

メリット

  • 構築済みのため表示速度が高い
  • SEO問題なし

デメリット

  • 更新頻度が高い動的な処理には向かない

基本構成

基本的にはSG。
動的に作成する必要があるページはSSR。
近年ではSSRを使うことが多い。キャッシュをうまく使えば効率よくできるから。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?