$ cat why-this-stack.md
# 為什麼挑 Astro + Cloudflare Pages 這個組合
> 個人網站的技術選型筆記:Astro 的靜態渲染、Cloudflare 的免費 CDN 跟 Pages Functions、Decap CMS 拿來當後台。
- 發佈於:
- 2026-05-27
- 閱讀時間:
- 2 分鐘 · 401 字
- 標籤:
- astro cloudflare stack
簡單記一下選型理由,給自己未來看,也給有興趣的人參考。
Astro
選 Astro 主要是因為它做出來的網站 大部分 HTML 都是靜態的,JavaScript 只在 真正需要互動的地方才載入 (像我這站的主題切換器跟首頁的打字機效果)。 這對個人部落格幾乎完美 — 內容為主、互動為輔。
$ astro build> 38 page(s) built in 1.2s> 0 KB of JavaScript shipped to non-interactive routes而且 Astro 的 markdown 處理鏈很完整,可以接 remark / rehype 插件做語法高亮、 數學公式、TOC、reading time…,基本上想得到的部落格功能都有現成的。
Cloudflare Pages
部署選 Cloudflare 而不是 Vercel,理由有幾個:
- 免費額度大 — 500 builds/month、無限頻寬、全球 CDN
- Pages Functions — 跟 Workers 同一個 runtime,要寫 OAuth proxy / API 都直接寫, 不用另外開一個服務
- 跟 DNS 整合好 — 我網域本來就在 Cloudflare,綁定 5 秒搞定
Decap CMS
Invalid admonition directive. (Admonition directives must be of block type ":::note{name="name"} <content> :::")
Decap CMS 的賣點是 沒有後端。它只是一個 SPA,直接呼叫 GitHub API 做 commit/PR。所以後台寫的東西其實就是在改 git repo。 ::
對個人網站來說這超級舒服 — 不用維護資料庫、不用管 server,
要備份就是 git clone 一份下來。要遷移到別的平台,把 markdown 拿走就好。
其他考慮過但沒選的
- Next.js — overkill,React 對純內容站太重
- Hugo — 模板語法不熟,而且 plugin 生態跟 npm 比起來算少
- Notion / Obsidian Publish — 不夠掌控,設計改不了
下次有空再寫一篇實際部署流程。