このサイトは非公式の日本語訳です。Cloudflare・EmDashプロジェクトが運営するサイトではありません。

ひとことで言うと

Astroのページは、ビルド時に事前に描画する方法と、アクセスがあったときにサーバーで描画する方法(サーバーレンダリング)のどちらかで作られます。EmDashの公式テンプレートは、すべてのページをサーバーで描画します。

図:2つのタイミング

アクセス時にサーバーで描画するページ事前に描画するページ(プリレンダリング)次のビルドまで反映されな次のリクエストから反映ビルドHTMLを作って保存訪問者のアクセ管理画面で記事を公開訪問者のアクセサーバーがデータベースから公開済みのエントリーを読むHTMLを作って返す管理画面で記事を公開
図のテキストを読む
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

次に読むページ