个人开发者系列-上线即“爆火”?那些掏空你 Cloudflare 额度的虚假繁荣
本系列专为个人开发者打造,核心理念是以最小成本实现最佳效果,主要侧重于免费或低成本的解决方案。旨在为早期独立开发者提供实用参考,助力其在资源有限的情况下开启创业之旅。 下面的内容是对2025年10月的内容记录,希望我趟过的坑,你不再踩。
01 意外的“惊喜”:我的插件网站火了?
我最近用 Nuxt v4 开发了一个网站:VSCode Plugin Toolkit - Professional Plugin Offline Download,主要提供 VS Code 插件的搜索和下载,并将其部署在 Cloudflare Workers 上。这个选择很符合我们一直讨论的“低成本启动”理念——Cloudflare Workers提供每天10万次请求的免费额度,对于早期项目来说应该绰绰有余。
Cloudflare Workers 和 Pages Functions 免费额度:
- 每个请求最多占用 10 毫秒 CPU 时间;
- 每天最多 100,000 (UTC+0)。
就在网站上线不久后,我连续收到了三封来自 Cloudflare 的邮件。
第一眼看到“您的账户已超过每日请求限制”时,我内心的第一反应竟然是: “天呐,难道我这网站上线即火,流量爆了?”
3 秒过后想想网站没做任何 SEO,也没做过推广的新站能火个 Der ,这么大的自然流量,这显然不正常。难道被挂片了?我拉跨,Cloudflare 也不拉库呀。
2 案发现场:谁在掏空我的免费额度?
Cloudflare Workers 免费版虽然慷慨,但也有严格的限制:每天 10 万次请求 (UTC+0) 。如果请求被透传到后端 Server,每一次都会扣减这个额度。
我赶紧打开日志进行排查,结果让我大跌眼镜。
罪魁祸首一:消失的占位图
在开发插件搜索功能时,我设计了一个逻辑:图片加载中或查询失败时显示一张默认占位图。然而,由于粗心,我忘记将这张图放到 public 静态资源目录中了,导致请求路径不存在。
更糟糕的是,作为 Nuxt 新手,我当时没有配置 error.vue 页面。
在 Nuxt 的机制下,如果一个静态资源请求(如 .png)在静态目录找不到,且没有错误拦截,这个请求就会回源到服务器(Server) 。
从日志中可以看到,大量的 404 请求涌向了那个并不存在的图片。由于没有缓存,每一次 404 都在实打实地消耗我的 Workers 额度。
罪魁祸首二:勤奋的“不速之客”
除了自己留下的坑,我还发现了一些“不怀好意”的访客。
通过日志分析,我发现大量针对 .env、phpinfo.php、wp-admin 等路径的扫描请求。这些典型的恶意扫描和爬虫行为,因为我缺少全局错误拦截,导致所有的异常请求全部走到了 Nuxt 的服务器端处理逻辑里。
漏风的窗户(没占位图)+ 敞开的大门(没错误页面)+ 门外的路人(扫描器) ,最终导致我的 10 万次额度在短短几个小时内被彻底掏空。
03 止损方案:最小成本的修复
针对上面两个做了如下修复:
-
补全静态资源:将丢失的占位图重新放回
public文件夹。这样 Cloudflare CDN 会直接拦截并返回静态资源,不再消耗 Workers 的 CPU 计算配额。 -
增加
error.vue:这是最关键的一步。在 Nuxt 中增加一个简单的自定义错误页,确保所有非预期路径的访问在前端就被拦截处理,而不是交给后端逻辑去消耗资源。
04 复盘:给个人开发者的避坑指南
这次“虚假繁荣”让我深刻意识到,在利用 Serverless 云服务享受“零成本”部署的同时,必须要注意资源的防御性管理。
- 不要信任开发环境的“丝滑” :本地开发时,由于网络延迟低,图片缺失可能只是一闪而过,容易被忽略。
- 路由兜底是刚需:无论是 Nuxt 还是其他框架,上线前请务必确认是否有处理 404 和 500 错误的兜底方案。
- 监控优于直觉:当看到流量暴涨时,先别急着庆祝,去分析一下日志。
修复这些问题后,网站的请求量迅速回归到了正常水平(周末使用的人相对较少)。
结语
独立开发的路上,我们不仅要学会构建,更要学会如何“防守”。Cloudflare 是个人开发者的神兵利器,但如果不注意细节,它也会因为额度超限而变得“钝重”。
如果你也正在使用 Nuxt ,记得检查一下你的 404 逻辑!