Cloudflare D1 的迁移怎么做?
D1 用版本化的 SQL 文件管理 schema。这篇讲迁移的三条命令、绑定名和数据库名的区别,以及本地与线上的差异。
一个问题一篇:KV 的限额、D1 的迁移、R2 的预签名上传、Durable Objects 的 alarm……从 Cloudflare 教程里拆出的单点问答。(共 33 篇)
D1 用版本化的 SQL 文件管理 schema。这篇讲迁移的三条命令、绑定名和数据库名的区别,以及本地与线上的差异。
开了读副本之后,用户可能读不到自己刚写的数据。这篇讲 withSession、bookmark 的用法,以及哪些结论只能引官方、本地看不到。
D1 的边界很明确:单库大小上限、每库单线程、没有交互式事务。这篇讲这些限制各自意味着什么,以及哪些场景 D1 依然合适。
Workers 可以直接托管静态文件,不写 Worker 代码也行。这篇讲 assets 配置怎么写、纯静态与静态加动态两种形态,以及计费、限额和回滚上的要点。
多环境忘了 --env、绑定没重新声明、dashboard 的改动被覆盖、Cron 注释掉没关闭,这四个部署问题是最常见的原因。
Worker 部署后需要一个入口:workers.dev、Custom Domain 还是 Route。这篇讲清三者各自适合什么场景,以及配置和 DNS 上的差别。
单线程只保证同步代码不被打断,一遇到 await 就可能被别的请求插进来。这篇讲输入闸门、输出闸门,以及怎么写读改写才不丢更新。
DO 实例的内存随时可能消失,休眠、被移出内存、部署和迁移都会让构造函数重新执行。这篇讲这些时间点,以及该把什么写进存储。
DO 每个对象有一份私有存储,SQLite 后端是新对象的推荐选择。这篇讲两套 API、官方列出的限额、Free 账户上限的矛盾,以及本地模拟和线上的差别。
alarm 是每个 Durable Object 一个的、可持久的定时器。这篇讲 setAlarm 的写法、失败后怎么重试、必须幂等的原因,以及它和 Cron Triggers 的分工。
朴素的 server.accept() 会让 Durable Object 一直驻留内存并持续计费。这篇讲 Hibernation API 的写法、休眠后哪些状态会丢,以及什么会阻止休眠。
按用户、IP 或 token 限流时,每个 key 一个 Durable Object,计数在对象内串行。这篇给出滑动窗口的写法,以及它在延迟、计费和热点上的代价。
一次读多个 key 最多 100 个,批量写入要走 Wrangler 或 REST,list 要靠 list_complete 判断结束并重复传 prefix。
key、value、metadata 的大小上限,每次调用最多多少次 KV 操作,免费和付费计划怎么计费,哪些限制本地能碰到、哪些碰不到。
Worker 先读 KV,没有再回源并写回。热点 key 过期、空结果缓存、大值读取这三个坑怎么处理。
请求花 2 秒等上游,CPU 时间却只有几毫秒。这篇讲 Workers 里 CPU 时间与墙钟时间各算什么、2026-10 的限额数字,以及超限后会看到什么。
想在客户端取消请求时清理资源,要用 request.signal,但它需要显式开启兼容性标志,而且我在本地只复现了一种触发时机。这篇讲怎么开、什么时候会触发,以及对外调用怎么设超时。
scheduled handler 不会等真实的 Cron 时间到来才能测。这篇讲本地用哪条路由触发、怎么模拟不同的 cron 表达式,以及旧路径还能不能用。
Queues 的 push 消费者默认自动扩缩并发,max_concurrency 只该用来保护下游。这篇讲并发怎么决定、消息能留多久,以及消息和队列的各项上限。
消息处理失败后,Queues 会按 max_retries 重试,用完后进入死信队列或被删除。这篇讲清重试次数、默认值和死信队列的行为。