層2 必要な役割 › ページを作るタイミング
ページを作るタイミング
ひとことで言うと
Astroのページは、ビルド時に事前に描画する方法と、アクセスがあったときにサーバーで描画する方法(サーバーレンダリング)のどちらかで作られます。EmDashの公式テンプレートは、すべてのページをサーバーで描画します。
図:2つのタイミング
図のテキストを読む
flowchart TB
subgraph PRE["事前に描画するページ(プリレンダリング)"]
P1["ビルド"] --> P2["HTMLを作って保存"]
P3["訪問者のアクセス"] --> P2
P4["管理画面で記事を公開"] -. "次のビルドまで反映されない" .-> P2
end
subgraph SSR["アクセス時にサーバーで描画するページ"]
S1["訪問者のアクセス"] --> S2["サーバーがデータベースから<br/>公開済みのエントリーを読む"]
S2 --> S3["HTMLを作って返す"]
S4["管理画面で記事を公開"] -. "次のリクエストから反映" .-> S2
end
図の補足
| 事前に描画するページ | アクセス時にサーバーで描画するページ | |
|---|---|---|
| 描画するとき | ビルド時(Astroの初期設定) | リクエストがあったとき |
| 向いている場合(Astro公式) | 静的なコンテンツ。サーバー関数を呼び出す必要がなく、パフォーマンスを引き出せる | ユーザーごとに内容を変えるページや、サイト全体を再ビルドせずに最新データを表示するページ |
| EmDashで公開した変更 | 再ビルドするまで変わらない | 次のリクエストから表示される |
- EmDashのサイトは、管理画面・API・最新のコンテンツをアクセス時に返すため、サーバーで描画する設定(
output: "server")と、実行環境に合わせたアダプターが必要です。 - 公式の「WordPress開発者のためのAstro」は、EmDashのテーマのルートに
getStaticPaths()を追加しないよう説明しています。例外は、EmDashをビルド時のデータ取得元として意図的に使う場合です。 - サーバーで描画するページも、設定したキャッシュの影響を受けます。
根拠にした公式ページ
- Astro公式「オンデマンドレンダリング」:https://docs.astro.build/ja/guides/on-demand-rendering/
- Astro公式「Astroを選ぶ理由」:https://docs.astro.build/ja/concepts/why-astro/
- EmDash公式「なぜEmDashか」(本サイトの訳):https://docs.emdashcms.com/why-emdash/
- EmDash公式「アーキテクチャ」(本サイトの訳):https://docs.emdashcms.com/concepts/architecture/
- EmDash公式「WordPress開発者のためのAstro」(本サイトの訳):https://docs.emdashcms.com/coming-from/astro-for-wp-devs/
- 公式テンプレートのAGENTS.md(blogテンプレート):https://github.com/emdash-cms/templates/blob/main/blog/AGENTS.md