导航 / 搜索 / 主题
↑↓ 选择 Enter 执行 Esc 关闭
← 返回列表
FIELD NOTE / 2026

把博客搬到边缘

$ cat /blog/把博客搬到边缘/

这个博客的托管方案动过一次手术:从纯静态托管搬到了 Cloudflare Workers。搬完之后顺了很多,把架构和账本都记下来。

为什么搬

最初是纯静态站,评论想自建就得另起一个 API 服务——跨域、两套部署、两份配置,个人项目背两套基础设施纯属自找麻烦。

搬到 Workers 之后一切归一:一个项目,前端是静态资产,后端是同一个 Worker 里的 /api/*。同域,没有 CORS;一次部署,前后端原子上线;一份配置文件说清所有事。

架构长什么样

visitor
  └─ blog.loonggy.workers.dev (Worker)
       ├─ /api/*    → Worker 代码(评论、统计、搜索日志、速率限制)
       └─ 其余全部  → 静态资产(Astro 构建产物,含 404 兜底)
数据 ── D1(评论 + 浏览量,SQLite)

几个关键点:

  • 静态资产不走 Worker CPU。资产服务是平台层的,不占 CPU 配额也不计费,只有 /api/* 真正执行代码;
  • D1 是 SQLite 在边缘的展开:建表、迁移、查询都是熟面孔,免费额度 5GB + 每天 500 万行读,个人站用不到零头;
  • 防灌水四层:蜜罐字段 → 平台速率限制 → 60 秒冷却 → Turnstile 人机验证。邮箱和 IP 只存加盐哈希,泄露了也对不上原文。

账本

免费档的真实边界(按官方 limits 页核过):

  • Worker 调用 10 万次/天——只算动态请求,静态资产不限;超额是停服不是扣款,个人博客离这个数很远;
  • CPU 10ms/次——对“查个评论列表”这种活绰绰有余;
  • 唯一确定支出:域名一年约 $10(还没买,workers.dev 先用着)。

也就是说,在“自建评论 + 自建统计 + 全文搜索”这个功能密度下,月费是 0。这个约束反过来塑造了架构——所有设计都在免费额度内做取舍,反而简单。

部署纪律

push master 触发 GitHub Actions:npm ci → build → wrangler deploy,两分钟上线。配一条硬规矩:部署前先 commit,保证仓库与线上零漂移。线上永远有源码对应,回滚就是 re-deploy 旧 commit。

搬完的感受

个人博客的最舒服形态,大概是:架构图一眼能画完,账单一眼能看完,故障时一眼能看出问题在哪一层。边缘这套全占了。工具链的尽头不是更复杂,是更省心。