最終確認日

Freshでブログ記事ページをSSGに対応したい

背景

項目 SSR (現状) SSG
ページ生成 毎リクエスト時 ビルド時のみ
SupabaseへのAPIアクセス 毎回 ビルド時1回
表示速度 やや遅い 超高速(CDNキャッシュ)
コスト 高い(API課金対象) 低い
記事更新反映 即時 ビルド or Webhook必要

変更点

  • Supabaseからの記事の取得をビルド時のみに行う。
  • 検索はこのままSSRを利用し、検索のたびにリクエストする

参考

調査

  • Freshでは公式ではSSG対応はしていない。
    • かといって Lume だとislandっぽいことはできなさそう
    • Next.jsなら簡単にできそうだけど
      • ロマンではあるのだ
      • ChatGPTも「Next.js に移行すると一部は楽になるが、Fresh で自作する楽しさとDenoの軽さ」も大きな利点っていってくれた
      • もはや両方作って片方をuruly.comにのせる+検索避けしちゃうのもアリやな…

やってみる

.
├── out/                    # ← 静的HTMLの出力先
│   └── posts/
│       ├── article-a/
│       │   └── index.html
│       └── article-b/
│           └── index.html
└──  src/
    └── generate_posts.ts  # ← このスクリプトでHTMLを出力
	└── routes/
	    └── posts/
	        └── [slug].tsx     # SSRルートはそのまま残す(fallback用)

いや、でもこれは完全に静的になって、islandが機能しなくなる。

結論

現状ではFreshSSG対応はかなり難しい。

サイトアイコン
公開日
更新日