我在将 Cloudflare Workers 部署到生产环境时犯的5个关键错误(以及如何避免)

发布: (2025年12月26日 GMT+8 02:06)
12 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供您想要翻译的正文内容,我将为您完整地翻译成简体中文,并保留原始的 Markdown 格式、代码块和链接。)

概览

我已经在生产环境中部署了超过 50 个 Cloudflare Workers。说实话?我犯了书中所有的错误

  • 有些只是小小的烦恼。
  • 还有些代价高昂。一次错误导致公司整整一个上午的宕机。另一次则暴露了一个安全漏洞,直到用户报告我才发现。

每一次错误都给我上了一课。经过多年(艰难的)学习,我终于拥有了一套可行的系统。

今天,我想分享我所犯的错误——以及你如何避免它们。

错误 #1:在没有安全检查清单的情况下部署

我做了什么

构建了一个 Worker,在本地测试后直接部署。看起来一切正常。

我遗漏了什么

  • 没有 CORS 配置(浏览器阻止请求)
  • 没有速率限制(被大量请求淹没)
  • 没有安全响应头(暴露于 XSS 攻击)
  • 密钥硬编码在环境中(我虽然使用了 Cloudflare Secrets,但没有对输入进行验证)

后果

我的 API 被大量请求冲击。没有速率限制导致崩溃。随后有用户报告可以注入恶意数据。

如何避免

在部署 之前 创建安全检查清单:

  • ✅ 为仅限你的域名配置 CORS(而不是通配符)
  • ✅ 启用速率限制
  • ✅ 对所有端点进行输入验证
  • ✅ 设置安全响应头(HSTS、CSP 等)
  • ✅ 将密钥存储在 Cloudflare(而不是代码中)
  • ✅ JWT 令牌设置过期时间
  • ✅ 错误信息不泄露系统细节

我现在对每一次部署都使用清单。只需 10 分钟,却能避免无数头疼。

这正是我创建 7‑检查清单系统(以及可直接用于生产的代码模板)来安全部署 Workers 的原因。安全只是其中之一。
获取完整指南,售价 $29 →

错误 #2:未在生产前测试性能

我的做法

在本地构建,在预发布环境测试,直接部署到生产。

我遗漏的地方

  • 缓慢的数据库查询
  • 缺失的缓存配置
  • 某些接口响应时间超过 2 秒

结果

用户抱怨卡顿。我的 Cloudflare Workers 费用比预期高(不必要的数据库调用)。我不得不回滚并进行优化。

如何避免

  • 在负载下测试响应时间(不仅仅是本地)
  • 检查 P95 延迟(而非仅看平均值)
  • 对数据库查询进行分析
  • 为重复请求实现缓存
  • 确认打包体积不超过 1 MB

在开发期间使用一个简单的 console.time() 就能立刻发现问题:

console.time('db-query');
const users = await env.DB.prepare('SELECT * FROM users').all();
console.timeEnd('db-query'); // Output: db-query: 145ms

我吃了苦头才学到这点,所以在我的部署指南里加入了完整的性能检查清单和缓存模板。
点此查看 → $29

错误 #3:忘记设置适当的日志记录

我的做法

部署后,认为它会正常工作,却没有设置任何监控。

我遗漏的

当出现故障时,我根本不知道发生了什么。没有日志。没有错误追踪。只有……什么都没有。

后果

盲目调试花了 2 小时。如果有适当的日志,本可以在 5 分钟 内找到问题。

如何避免

  • ✅ 在 wrangler.toml 中启用 Workers 日志
  • ✅ 结构化日志(JSON 格式)
  • ✅ 包含 RequestID 以便追踪
  • ✅ 记录不同级别(DEBUG、INFO、WARN、ERROR)
  • ✅ 为高错误率设置警报

示例:

const logger = new Logger({
  requestId: crypto.randomUUID(),
  path: url.pathname,
  method: request.method,
});

logger.info('Request received', { endpoint: '/api/users' });
// Output:
// {"timestamp":"2025-12-25T...","level":"INFO","message":"Request received","requestId":"...","path":"/api/users","method":"GET"}

我已经构建了一个结构化日志模板,并将其包含在我的指南中,指南中还包括监控、健康检查以及你需要的所有内容。
获取 $29 访问 →

错误 #4:没有回滚计划

我的做法

部署了一个有缺陷的版本,生产环境出问题后惊慌失措。

我遗漏的

我根本不知道如何快速回滚到之前的版本。因为手忙脚乱,我的修复花了 30 分钟。

后果

用户遭遇了 30 分钟的宕机,失去了信任。如果有熟练的回滚流程,可能只需要 2 分钟。

如何避免

  1. 熟记回滚命令:

    wrangler rollback DEPLOYMENT_ID
  2. 首先在预发布环境中测试。

  3. 将其记录在团队的运行手册中。

  4. 进行练习(认真地做一次回滚测试)。

5 分钟的练习可以为以后节省 30 分钟的慌乱。

错误 #5:未记录你的操作

我的做法

部署了关键更新,但没有记录更改,也没有告知团队。

我遗漏的

我的同事在一小时后部署时并不知道我的更改,导致冲突。

后果

配置混乱,部署失败,回滚了我的更改,第二天不得不重新部署。

如何避免

为团队创建部署检查清单:

  • 更改了什么?
  • 为何会更改?
  • 需要注意什么?
  • 如何回滚?
  • 谁进行了部署?
  • 何时部署?

5 分钟的部署日志可以在以后节省数小时的困惑。

有效的系统

部署前

  • 预部署检查清单(配置、密钥、数据库)
  • 安全检查清单(认证、CORS、头部、验证)
  • 性能检查清单(缓存、查询、打包大小)
  • 测试检查清单(单元、集成、预发布)

部署期间

  • 部署日检查清单(健康检查、指标、警报)
  • 持续监控(日志、警报、健康端点)

如果您想要一套现成的检查清单、模板以及一步步的指南,以安全部署 Cloudflare Workers,请获取完整套餐,售价 $29

获取完整指南 →

24 小时的 Sly

  • 监控错误率和响应时间

部署后

  • 使用部署后检查清单(日志、指标、团队通知)
  • 记录变更内容
  • 庆祝(你值得)

该系统已消除我 95 % 的生产问题。现在一旦出现故障,能够立即捕获并在几分钟内修复,而不是数小时。

乏味却必要的真相

部署并不光鲜。清单也不刺激。但它们有效。

我合作过的最佳团队并不是最聪明的——而是最有纪律性的。

  • 他们有清单。
  • 他们遵循清单。
  • 他们很少出现事故。

当真的出了问题时?他们有预案,几分钟内解决,然后继续前进。

这就是我花时间把所有内容汇编成一本指南的原因。 不是想推销,而是因为我真心相信每位开发者都应该拥有它。内容包括:

  • ✅ 25页的生产部署指南
  • ✅ 7份可打印清单(可直接打印并贴在办公桌上)
  • ✅ 9个可直接用于生产的代码模板

在此获取 →$29

从哪里开始

如果你正在阅读此文并想,“是的,我应该有一个系统…”,我推荐以下步骤:

  1. 打印安全检查清单 并贴在你的显示器上。
  2. 为你的团队创建一个简易部署检查清单(或从我的指南中获取一个)。
  3. 在 Cloudflare 中设置一个高错误率警报
  4. 进行一次回滚测试

大约需要 1 小时,可能帮你避免 6 个月的安全噩梦。

或者,如果你想一次性准备好所有内容,获取完整指南,仅需 $29 →

最终思考

我是在一次次代价高昂的错误中学到这些教训的。你不必如此。

最聪明的做法不是第一次就写出完美的代码,而是建立一个在错误进入生产环境之前就能捕获它们的系统。

  • Checklists
  • Monitoring
  • Logging
  • Rollback procedures

无聊吗?也许吧。但你的运维团队会感激你,用户也不会遭遇宕机,CEO 也不会对你大喊大叫。

你是否也犯过这些错误?学到了什么? 在评论区告诉我——我很想听听你的部署“战争”故事。

如果你想要一个完整的系统来避免这些问题,我已经把所有内容打包好,只需 $29

指南内容概览

既然我一直在提到它,这里是你实际能得到的内容,售价 $29:

指南

  • 25 页的生产部署知识
  • 包括从部署前配置到部署后监控的全部内容
  • 实际错误案例及解决方案

代码(9 个可直接用于生产的 TypeScript 模板)

  • JWT 认证
  • CORS 处理器
  • 限流
  • 缓存策略
  • 安全响应头
  • 结构化日志
  • 输入校验
  • 健康检查
  • 完整的 Worker 设置

检查清单(7 张可打印的清单,每个阶段一张)

  • 部署前
  • 安全
  • 性能
  • 测试
  • 监控
  • 部署日
  • 部署后

附加内容

  • 配置示例
  • 完整故障排查指南
  • 包含 20 多个已解答问题的 FAQ

所有内容均可直接使用、定制和扩展。

获取仅需 $29 →

如果不满意,提供 30 天退款保证。

Back to Blog

相关文章

阅读更多 »