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 を持つページはプリレンダリングできない。