Cloudflare Workers 实战:个人站长如何零成本搭建高性能应用

Cloudflare Workers 实战:个人站长如何零成本搭建高性能应用

引言

2022年我第一次接触Cloudflare Workers时,半信半疑——一个"无服务器"平台,每天10万次免费请求,真的能跑正经应用?三年后的今天,我用Workers搭建了重定向引擎、API网关、图片压缩服务、甚至一个完整的URL短链系统,每个月零成本维护。这篇文章把我的经验和踩过的坑全部整理出来。

一、Workers到底是什么

Cloudflare Workers是一个在全球330多个节点运行的Serverless计算平台。你写一段JavaScript(或WASM),部署之后自动分布到Cloudflare的全球边缘网络。用户请求到了离他最近的节点,直接在该节点上执行你的代码,然后返回结果。

这个过程最关键的优势有两个:

第一是延迟极低。用户的请求不需要回到你的源服务器,在边缘节点就处理完了。我自己的测试数据是:从东南亚访问Workers部署的API,延迟在20-50毫秒之间,而走源服务器大概在200-300毫秒。

第二是天然抗压。Workers运行在Cloudflare的全球基础设施上,单个Workers应用理论上可以瞬时处理百万级并发。我个人做过一个简单的压力测试,在1分钟内发送了5万次并发请求,Workers全部正常响应,没有限流也没有超时。

二、个人站长最适合用Workers做的6件事

2.1 URL重定向与短链服务

个人站长最讨厌的三件事之一就是:换域名了,旧链接全部404。用Workers做重定向比Nginx配置灵活得多。我写了一个不到30行的脚本,把旧域名的几百条URL规则维护在一个JSON文件里,Workers每次请求查表重定向。改规则只需要更新JSON,不用重启任何服务。

短链服务就更简单了。KV存储做数据库,Workers做路由,两三小时就能搭完。不需要购买商业化短链产品。

2.2 API聚合与数据缓存

我有个站从三个不同来源抓取数据展示在一个页面上。以前的做法是后端PHP每次请求都去三个源头拉数据,页面加载经常超过3秒。后来用Workers做聚合层:Workers在第一次请求时并发拉取三个接口的数据,组装后返回,同时缓存到KV。后续请求直接返回缓存数据,响应时间从3秒降到了200毫秒以内。

2.3 A/B测试引擎

想测一下不同的首页文案对转化率的影响?传统方式需要改代码、部署、切流量。用Workers的话,在边缘层分配流量:50%用户看到版本A,50%看到版本B,配置改一下就行,源服务器完全不用动。而且Workers可以绑定Cookie,保证同一个用户始终看到同一版本。

2.4 图片处理与优化

Workers + Cloudflare Images的组合可以做一些基础的图片处理:调整尺寸、格式转换、添加水印。虽然不如专业的图片处理服务器功能强大,但对于日均几百张图片的个人博客来说完全够用。关键是免费额度就足够覆盖大部分站长的需求。

2.5 自定义机器人检测

Cloudflare的WAF虽然强大,但免费版的自定义规则有限。我利用Workers实现了一个更灵活的爬虫检测逻辑:分析请求头、行为模式、访问频率,对可疑请求返回验证码或者直接拦截。这个脚本运行了一年多,帮我挡掉了至少90%的恶意爬虫流量。

2.6 多站点统一监控面板

手头管理着几个网站,想看它们的状态?我用Workers搭配Cron Triggers,每隔5分钟轮询一遍所有站点的HTTP状态码和响应时间,如果发现异常就通过Telegram Bot发送告警。这个应用完全免费,代码加起来不到100行。

三、部署流程与踩坑记录

3.1 开发环境搭建

推荐使用Wrangler CLI(Cloudflare官方脚手架工具)。核心步骤只有三步:

npm install -g wrangler
wrangler init my-worker
wrangler publish

第一次接触大概需要半小时熟悉流程。有一个小技巧:在wrangler.toml中配置多个环境,比如production和dev,可以在不同域名下测试同一份代码。

3.2 存储方案选择

Workers有三种存储可选:

  • KV:全球最终一致的键值存储,适合配置文件、缓存数据
  • D1:关系型数据库,适合有结构化查询需求的场景
  • R2:对象存储,适合图片、文件

个人站长的起步建议:KV学到手就能解决80%的问题。D1适合需要复杂查询的应用,R2适合做图床和文件管理。三种存储都有免费额度,KV每天10万次读取完全免费。

3.3 免费额度够用吗

Cloudflare Workers的免费计划包括:每天10万次请求,每个请求CPU时间限制10毫秒(付费版30秒)。我个人的使用经验是:对于个人博客的API聚合、重定向、缓存场景,每天用到1-2万次请求就算很多了。10万的额度对一个个人站长来说绰绰有余。

但要注意一个坑:KV的写入次数限制。免费版KV每天只有1000次写入。如果你的应用需要频繁更新KV数据(比如每隔几分钟写一次缓存),需要做好写入次数的预算管理。

四、性能对比:Workers vs 传统VPS

为了让大家有直观感受,我用自己的博客做了对比测试:

  • 源服务器:一台2核4G的Hetzner VPS
  • 对比场景:同样的API接口,分别走源服务器和Workers

结果非常明显:Workers的平均响应时间是28ms,源服务器的平均响应时间是215ms。在包含缓存命中的场景下,Workers的响应时间和源服务器差距更大。

当然,Workers不是万能的。如果你的应用需要长时间运行的进程、依赖特定操作系统功能、或者使用了PHP/Ruby等不被Workers直接支持的语言运行时,那就还需要传统VPS。

五、安全最佳实践

Workers虽然运行在Cloudflare的沙箱环境中,但安全配置仍然不能马虎:

  1. 环境变量不要写在代码里:API Key和TOKEN用Wrangler的wrangler secret put命令设置
  2. 配置请求大小限制:默认请求体大小限制是100MB,建议你根据实际需求设小一些
  3. 启用HTTPS:好在Workers默认绑定SSL证书,这一点不用操心
  4. 限速规则:在Workers代码里加一个简单的IP限速逻辑,防止被单一IP刷爆额度

六、总结

Cloudflare Workers是我近几年发现的对个人站长性价比最高的技术工具之一。零成本起步、全球加速、无运维负担,而且学习曲线非常平缓——会写JavaScript就能上手。如果你还在犹豫要不要尝试,建议先从最简单的重定向或API缓存场景开始,半小时部署完你就知道它的好处了。

Last modification:July 14th, 2026 at 07:58 pm

Leave a Comment