TL;DR

ビルド時に、テンプレートとコンテンツから Web ページを静的な HTML ファイルとして生成しておく方式。リクエストごとにページを作らない。

なぜ必要か

Wikipedia によると、ページが事前に作られているので、サーバの処理が単純になり、CDN から配信でき、攻撃対象も小さくなる。ドキュメントやブログのように、内容があまり変わらないサイトでよく使われる。

仕組み

Markdown や JSON などの入力ファイルを HTML テンプレートと組み合わせて、静的なページを生成する。動的なサイトと違い、生成したページはリクエストによって変わらない。

例

  • Jekyll、Hugo、Next.js、Gatsby などの静的サイトジェネレータ
  • SvelteKit では、export const prerender = true でページをプリレンダリングできる。アプリ全体をプリレンダリングできるなら、adapter-static で静的な Web サーバ向けのファイルを出力できる

注意点

SvelteKit のドキュメントによると、ページをプリレンダリングできるのは、どのユーザが直接アクセスしてもサーバから同じ内容を受け取る場合だけである。サーバが POST リクエストを処理する必要があるので、Form actions を持つページはプリレンダリングできない。

関連

出典