给静态站免费长出后台:Cloudflare 免费能力调研
我的小站是 Astro 5 纯静态站,托管在 Cloudflare Pages(git push 即发布)。过去一直以为“交互和数据存储”要买服务器,调研后确认:CF 免费额度对个人站绰绰有余——Pages 项目里放一个 functions/ 目录,就白送一个边缘后端(Pages Functions 与 Workers 共用免费额度),静态资产请求免费无限。
免费额度总表(2026-08 核实)
| 产品 | 免费额度 | 说明 |
|---|---|---|
| Workers / Pages Functions | 10 万请求/天,10ms CPU/次,128MB | 静态资产请求免费无限 |
| D1(SQLite) | 5GB 总量,500 万行读/天,10 万行写/天 | 支持 FTS5 全文检索 |
| KV | 1GB,10 万读/天,1000 写/天 | 写额度最紧,别当数据库 |
| R2(对象存储) | 10GB/月,100 万写/月,1000 万读/月 | 出站流量免费 |
| Turnstile | 免费无限验证 | 人机验证 |
| Web Analytics | 免费、隐私友好 | 2025-10 起免费域名默认开启 |
| Cron Triggers | 免费账户 5 个 | 定时任务 |
| Queues | 1 万操作/天 | 异步解耦 |
| Workers AI | 1 万 neurons/天 | bge-m3 嵌入约 1075 neurons/百万 token |
| Vectorize | 3000 万查询维度/月 + 500 万存储维度 | 语义搜索 |
| Email Routing | 免费(收件路由) | 发件需 Paid |
| Hyperdrive | 10 万查询/天 | 连外部数据库 |
| Pages 构建 | 500 builds/月,20k 文件 | push 即构建 |
三条红线:
- 10ms CPU/次 → 逻辑保持轻量,重活放 Cron/客户端/构建期;
- 50 次子请求/请求 → 别在单请求里连环 fetch;
- 构建零网络(本站原则)→ 动态数据要么进 git,要么运行时客户端 fetch。
13 项功能清单
- 站内全文搜索:Pagefind(构建期静态索引,零后端)——已定稿
- 评论/留言:自建 D1 + Turnstile(匿名、数据自主、审核队列)
- 表单/留言板:Worker 端点 + Turnstile + 蜜罐 → D1
- 访问统计:Cloudflare Web Analytics(零代码)
- stars 定时同步:GitHub Actions 每天跑脚本自动 commit → 重建
- 短链 /r/xxx:D1 存短码 → Worker 302 + 点击统计
- 订阅/Newsletter:暂搁置(发信免费方案受限)
- 状态页/站点监控:Cron Worker 定时 ping → D1 → /status
- 随机“今日考古”API:把构建时翻牌改成运行时端点
- Webhook 通知:新评论/表单转发到 IM
- AI 摘要/自动标签:Workers AI 生成初稿、人工终审
- 语义搜索/推荐:暂搁置(内容量小,Pagefind 已够)
- 个人 API / JSON 输出:把 site-data 数据开放成 JSON
选型决策(八问摘要)
| 决策点 | 结论 | 理由 |
|---|---|---|
| 定位 | 先存档,按需开发 | 刚上线,不预先排期 |
| 站内搜索 | Pagefind | 零后端;D1 FTS5 留给动态数据 |
| 评论 | 自建 D1 + Turnstile | 匿名 + 数据自主,防刷四件套配齐 |
| 统计 | 只要 Web Analytics | 零代码;阅读量/点赞以后可选 |
| stars 同步 | GitHub Actions | 数据进 git、构建零网络 |
| 表单通知 | 先只存 D1 | 邮件通知等域名迁移后 |
| 阶段 3 | 状态页/AI 摘要/个人 API | 其余搁置 |
| 公开性 | 本篇即晋升版 | 路线图公开 |
落地路线
- 阶段 0 零代码快赢:Web Analytics + Pagefind + Actions 定时 stars
- 阶段 1 第一个后端:建 D1(评论/表单共用)+ 表单 + 短链
- 阶段 2 互动:评论 + Webhook + 可选随机考古/阅读量
- 阶段 3 按需长:状态页 + AI 摘要 + 个人 API
- 搁置清单:Newsletter、语义搜索、RSS 聚合
全程不花钱、不改静态架构,随时可停。
风险与边界
- 免费额度警戒线:KV 写 1000/天;D1 全表扫描烧行读(建索引);Cron 5 个/账户;Pages 500 builds/月
- 中文搜索:Pagefind 中文可搜但分词要实测;D1 FTS5 中文要处理 tokenizer
- 防垃圾:Turnstile + 蜜罐 + 限流 + 审核队列
- 隐私:Web Analytics 不采个人数据;自建计数只存哈希不存 IP
- 域名:Email Routing/邮件通知需要自定义域名迁到 CF
来源(Cloudflare 官方文档)
- Workers 限额/定价:https://developers.cloudflare.com/workers/platform/limits/ | https://developers.cloudflare.com/workers/platform/pricing/
- D1 定价:https://developers.cloudflare.com/d1/platform/pricing/ | FTS5:https://developers.cloudflare.com/d1/sql-api/sql-statements/
- R2:https://developers.cloudflare.com/r2/pricing/ | KV:https://developers.cloudflare.com/kv/platform/pricing/
- Turnstile:https://developers.cloudflare.com/turnstile/plans/ | Web Analytics:https://developers.cloudflare.com/web-analytics/about/
- Cron:https://developers.cloudflare.com/workers/configuration/cron-triggers/ | Queues:https://developers.cloudflare.com/queues/platform/pricing/
- Workers AI:https://developers.cloudflare.com/workers-ai/platform/pricing/ | Vectorize:https://developers.cloudflare.com/vectorize/platform/pricing/
- Email:https://developers.cloudflare.com/email-routing/ | Pages:https://developers.cloudflare.com/pages/platform/limits/ | https://developers.cloudflare.com/pages/functions/pricing/