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?

微経験エンジニアが学ぶ「本気のNextJS」 part7

Posted at

本PJではNext.js公式チュートリアルを元に実施します。
今回はchapter8の内容となります!

🏎️ 静的 VS 動的 🚀 Webページはいつ作る?Next.jsのレンダリング戦略とパフォーマンスの罠

Webページを表示するとき、「そのページはいつ作られているか」を考えたことはありますか?

実は、Next.jsには大きく分けて2つの戦略があります。

  • 静的レンダリング (Static Rendering): 事前に作り置きしておく方法。

  • 動的レンダリング (Dynamic Rendering): 注文が入るたびに作る方法。

今回は、この2つの戦略がどう違うのか、そして「動的レンダリング」に潜む重大なパフォーマンスの罠について見ていきましょう!

🍱 静的レンダリング (Static):最強の"作り置き"戦略

これは、「デプロイ時(お店の開店前)に人気の弁当(Webページ)を完璧に作り上げて棚に並べておく」戦略です。

ユーザーがアクセス(来店)すると、すでに完成している弁当を「はい、どうぞ!」と瞬時に渡すことができます。

主なメリット

  • とにかく速い! (高速化): すでに完成品が世界中のCDN(便利な支店)にキャッシュされています。ユーザーは一番近い支店から弁当を受け取るだけなので、表示が爆速です。

  • サーバーに優しい (負荷軽減): 注文ごとに調理(レンダリング)する必要がないため、サーバー(厨房)は大忙しにならず、コストも抑えられます。

  • SEOに強い: 検索エンジンのロボットが来たときも、すでに完成したページがあるので内容をすぐに理解してもらえ、検索順位が上がりやすくなります。

最適な場面:ブログ記事、製品紹介ページ、企業の「会社概要」ページなど、誰がいつ見ても内容は同じページに最適です。

👨‍🍳 動的レンダリング (Dynamic):究極の"オーダーメイド"戦略

これは、「お客さん(ユーザー)が来店し、注文(リクエスト)を受けてから、その人のためだけに調理(レンダリング)を始める」戦略です。

主なメリット

  • 常に最新! (リアルタイムデータ): 株価チャートやニュース速報など、データが頻繁に変わるページに対応できます。

  • あなた専用! (ユーザー固有のコンテンツ): 「マイページ」や「ダッシュボード」など、ログインしたユーザーごとに表示内容を変えることができます。

  • リクエスト情報を活用: Cookie情報やURLのパラメータ(?id=123など)を見て、表示内容を調整できます。

😱 動的レンダリングの罠:「遅い食材」がすべてを止める

「オーダーメイド」は素晴らしい響きですが、大きな弱点を抱えています。

それは、「コース料理(ページ全体)の完成速度は、一番遅い食材(データ取得)の到着速度に依存する」という問題です。

例えば、ダッシュボードページを「コース料理」だと想像してください。

  • 売上データ(前菜)

  • 最新の請求書リスト(スープ)

  • 顧客数(メインディッシュ)

これらを動的レンダリングで用意するとき、もし「前菜」の売上データを取得するのに3秒かかってしまったらどうなるでしょう?

答えは、「前菜が届くまで、スープもメインディッシュも調理を始められない」です。

結果として、ページ全体が表示されるまでに丸々3秒間、ユーザーは真っ白な画面(またはローディング画面)を見続けることになります。たった一つのデータが遅いだけで、ページ全体の体験が最悪になってしまうのです。

この「一つの遅れが全体をブロックする」問題こそが、動的レンダリングが直面する最大の課題です。


今回はここまで!
ご覧いただきありがとうございます!

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?