用 Cloudflare Pages 架一個零成本的靜態站
從 Astro 專案到全球邊緣部署,記錄設定過程中幾個容易踩到的地方。
Cloudflare Pages 的免費額度對個人站來說相當寬裕:頻寬與請求次數都沒有上限, 唯一要留意的是每月 500 次的建置額度。
建置設定
連接 GitHub 倉庫之後,只需要三個設定:
| 欄位 | 值 |
|---|---|
| Build command | npm run build |
| Output directory | dist |
| NODE_VERSION | 22 |
NODE_VERSION 這個環境變數容易被忽略,但不設的話建置環境可能會用到過舊的 Node,
導致本機正常、線上失敗。
快取策略
靜態資產的檔名帶內容 hash,所以可以放心設一年的 immutable:
/_astro/*
Cache-Control: public, max-age=31536000, immutable
/*.html
Cache-Control: public, max-age=0, must-revalidate
HTML 則必須每次重新驗證,否則發了新文章,回訪的讀者會看到舊的列表頁。
絕對網址
sitemap、RSS、OpenGraph 都需要完整網址,所以 astro.config.mjs 裡的 site 是必填的:
export default defineConfig({
site: process.env.SITE_URL ?? 'https://example.pages.dev',
});
把它接到環境變數的好處是:日後綁自訂網域時,只要改 Cloudflare 上的一個變數就好, 不必動到程式碼。
小結
整套設定下來大約半小時,之後就是 git push 然後等一分鐘。
對於一個不想維護伺服器的人來說,這個交易划算。