把博客迁到 D1 免费层上的 EmDash:读取行额度用尽,作者两次回滚
tozai(@ccietry_tozai)尝试把日均约 800 独立访客、7,000 次浏览的 WordPress 博客迁到 Cloudflare 上的 EmDash,结果超出 D1 免费层每天 500 万读取行的额度;他没有改用没有硬上限的付费方案,而是退回 WordPress。
- 适用产品
- D1Workers
- 来源
- 作者经验CCIE TOZAI 博客(ccie-go.com)
- 作者
- tozai(@ccietry_tozai)
要点
- 作者报告:迁移前的正常一天 D1 读取约 110 万行(免费额度的 22%);迁移期间每天达到 500 万行日额度的 107%–123%,10 月 14 日峰值为 10,167,276 行(203%)。
- 他回滚了两次:10 月 13 日 17:40(日本时间)当天额度已用 90%,而下次重置(日本时间 09:00)还要 15 小时以上,他提前回滚;10 月 14 日 19:44 在实际超额后再次回滚。10 月 13 日仅 13 点这一小时(他标注为大量机器人流量)就读取了 167 万行。
- 他采取的缓解措施:边缘缓存时长从 5 分钟延长到 1 小时再到 1 天、图片分发也加缓存、文章列表的阅读时长预先计算、关闭不必要的聚合查询,用 WAF 规则拦截 .env 等扫描路径,开启 Bot Fight Mode 并对流量集中地区限速。他写道读取量仍然压不进额度,而且始终没有完全查清原因。
- 他提醒:修改缓存设置、重新部署或清除缓存都会让缓存失效,之后所有请求同时打到数据库;他的实测在 19:00、19:15、19:30 分别读取 1,620,396、3,581,449、1,133,884 行。
- 他没有改用 Workers Paid:按他的说法,5 美元是最低消费而不是套餐价,付费方案有告警但没有硬性停止。他的结论是日独立访客超过 500 就不要迁到免费层;他已暂停迁移,并表示如果 Cloudflare 计划中的硬性费用上限推出,会再考虑。
- 官方文档(2026-10-15 复核):Workers Free 下 D1 每天含 500 万读取行和 10 万写入行,UTC 00:00 重置;账户达到日额度后 D1 查询返回错误,升级到 Workers Paid 会解除限制,通常几分钟内生效。Workers Paid 每月含 250 亿读取行,超出部分每百万行 0.001 美元。预算告警仅作通知,不会暂停或封顶用量。
原始来源
发布
把博客迁到 D1 免费层上的 EmDash:读取行额度用尽,作者两次回滚
打开原始来源tozai(@ccietry_tozai)尝试把日均约 800 独立访客、7,000 次浏览的 WordPress 博客迁到 Cloudflare 上的 EmDash,结果超出 D1 免费层每天 500 万读取行的额度;他没有改用没有硬上限的付费方案,而是退回 WordPress。
作者的 𝕏 文章版:即使做了缓存和机器人防护,日均约 800 独立访客、7,000 次浏览仍让免费层 D1 超出每天 500 万读取行的额度(峰值 1,010 万),清除缓存让情况更糟,于是从 EmDash 回滚。他写道免费层超额会安全地停下,而只有告警、没有硬上限的付费方案不会。
到 𝕏 阅读tozai
@ccietry_tozai · 𝕏 原帖
https://t.co/IuQQRAVw6o
阅读全文归档于
tozai · @ccietry_tozai
Why I Gave Up Migrating My Blog to Cloudflare
A lot of people are saying you can migrate your blog to Cloudflare EmDash for free and that leaving WordPress is the smarter move. I’m deliberately sharing a caution based on real measurements. ⚠️ Rolled back from EmDash. Free-tier D1 exceeded the 5M daily row-read limit (peaked at 10.1M) on ~800 uniques / 7k PVs, even with caching and bot mitigation. Cache purges made it worse. Paid plan has no hard spending cap — alerts don’t stop charges. For a personal site, that risk is unacceptable. Uncapped usage means one bug or crawler spike can generate a multi-thousand-dollar bill while you’re asleep. Free tier fails safely. Paid does not. Details: https://ccie-go.com/cloudflare-emdash-migration-giveup-en/
其他推荐阅读
在 Durable Objects 上设计扑克游戏,让空闲时间不花钱
Philip Atkinson 介绍他在 Cloudflare 开发者平台上的多人扑克游戏架构,以及他遵循的成本原则:结束的对局移出 Durable Object 存储、WebSocket 休眠、用 alarm 唤醒、把日志当作成本决策。
babynarc:Durable Objects alarm 循环,意外账单从 $300 涨到 $500。
@babynarc 称一个他以为已不活跃的旧 Durable Object 里出现 alarm 循环,让他“被坑得很惨”:意外账单从 $300 涨到 $500,停掉后仍在上涨。他在回复 Cloudflare 的 Dane Knecht 与 Kenton Varda 时建议默认在每个 `cf` 结果前附上预算提醒信息。
把 Cloudflare 控制在 5 美元内:意外账单从哪来
Ashish Sharma(@sarmaasis)用 5 美元的 Workers Paid 方案运行多个网站,按产品列出他认为会悄悄推高 Cloudflare 账单的用法,并附 12 项检查清单。