このブログは Astro で生成した静的ファイルを配信しています。
なぜ静的サイトにしたのか
公開するのが HTML と画像だけなので、サーバー側の攻撃面がほとんどありません。
export function postState(post: Post, now = buildTime): PostState {
if (post.data.status === 'draft') return 'draft';
return post.data.publishAt <= now ? 'published' : 'scheduled';
}
予約公開
ビルドのたびに「公開日時を過ぎた記事」をすべて出力するので、定期的にビルドするだけで予約公開が実現できます。