まず結論
静的サイトは、あらかじめ作られたHTMLを配信するサイトです。動的サイトは、リクエストに応じてサーバがHTMLやデータを作るサイトです。
どちらが上という話ではありません。作りたいものによって向き不向きがあります。
静的サイト
静的サイトでは、公開前にHTML、CSS、JavaScriptなどを生成します。
build
-> index.html
-> about/index.html
-> assets/style.css
ユーザーがアクセスすると、サーバやCDNは既にあるファイルを返します。
向いているもの:
- コーポレートサイト
- ブログ
- ドキュメント
- ランディングページ
- 更新頻度が低めの情報サイト
Astroや静的出力のNext.js、Hugoなどは静的サイト構築で使われます。
動的サイト
動的サイトでは、アクセス時にサーバが処理してHTMLやデータを返します。
例:
- ログイン後のマイページ
- ECサイトのカート
- 管理画面
- 検索結果
- ユーザーごとに変わる画面
サーバは、DBを読んだり、認証を確認したり、リクエスト内容に応じてレスポンスを変えたりします。
生成タイミングの違い
| 種類 | いつHTMLを作るか |
|---|---|
| 静的サイト | ビルド時 |
| 動的サイト | リクエスト時 |
静的サイトは事前に作るため、配信が速く、構成がシンプルになりやすいです。
動的サイトはリクエストごとに処理できるため、ユーザーごとの表示やリアルタイムなデータに向いています。
フォームやAPIはどうなるか
静的サイトでも、フォームやAPI連携はできます。
たとえば:
- 外部フォームサービスを使う
- サーバレス関数を使う
- APIだけ別サーバにする
- 静的ページからJavaScriptでAPIを呼ぶ
つまり、静的サイトだから何も動かせないわけではありません。HTML配信は静的、問い合わせ処理は別APIという構成もあります。
選び方
| 要件 | 向いている構成 |
|---|---|
| 会社紹介 | 静的サイト |
| 技術ブログ | 静的サイト |
| 会員マイページ | 動的サイト |
| 管理画面 | 動的サイト |
| 問い合わせフォーム | 静的 + 外部サービス/API |
| 検索機能 | 静的 + クライアント検索、または動的 |
小さく始めるなら、静的サイトで十分なことが多いです。ログイン、DB更新、ユーザーごとの表示が必要になったら動的処理を検討します。
ポイント: 「サイト全体が静的か動的か」ではなく、「どの部分に動的処理が必要か」で考えます。
まとめ
静的サイトは、事前に生成したファイルを配信する構成です。動的サイトは、アクセス時にサーバが処理して内容を返す構成です。
ブログや会社サイトは静的サイトと相性がよく、ログインやDB更新が中心なら動的サイトが必要になります。