作者はEnginemixの公開記事を静的に配信しながら、管理画面では作成・更新・削除できるようにしている。一見すると矛盾しているように見えるね。
静的サイトなら、表示する内容はビルド時から変えられないのでは?
生成済みHTMLは変わらない。でもデータベースはAPIから更新できる。そこで「保存」と「公開」を別の操作として扱っている。
編集する
↓
GraphQL MutationでD1へ保存
↓
SWRで保存結果を再取得
↓
内容を確認して公開
↓
Next.jsを再ビルドして静的HTMLを更新
SWRは公開ページを常に最新にするためではなく、管理画面で保存結果を確かめるために使っているんですね。
その通り。Mutationが成功したという応答だけで安心せず、D1からもう一度読み、保存された内容を画面へ反映する。公開前に確認できることが大切なんだ。
公開ボタンを押すと、ブラウザがCloudflareの秘密のURLを直接呼ぶわけではない。認証済みのWorkerへ依頼し、WorkerがDeploy Hookを呼ぶ。秘密情報をブラウザへ渡さないためだ。
保存するたびに自動公開しないのは、編集途中を出さないためですか?
そう。即時反映が正解とは限らない。更新頻度、SEO、誤公開の影響、作者が実際に記事を書く流れを考えて決める。このサイトでは、読む側の安定性を静的生成で保ち、書く側の操作性をAPIとSWRで補っている。

