我在 Cloudflare 上部署了很多网站,CPU 使用时长一直居高不下。每个月 Cloudflare 的账单上,CPU 时长费用都要占 80% 以上。最近实在忍无可忍,开始各种折腾,想办法降低 CPU 使用时长。
先搞明白 CPU 使用时长是怎么算的
要降低 CPU 使用时长,首先要搞明白它是怎么计算的。公式如下:
CPU 时间费用 = (每请求平均 CPU ms × 请求数 - 包含的免费 CPU ms) ÷ 1,000,000 × $0.02
看这个公式就知道,想省钱,其实就是两条路:降低请求数,以及降低每次请求的 CPU 时长。
先说降低请求数。流量大的网站,请求数肯定大,但除了真流量,还有一个大增项——各种爬虫和机器流量。正常的 Google、ChatGPT 等搜索引擎和 AI 的爬虫是不能屏蔽的,除非你不想要它们带来的流量。除此之外,很多网站都有大量恶意的机器流量,这些才是要屏蔽掉的。
至于降低每次请求的 CPU 时长,最直接的方法就是把网站静态化,充分使用缓存。另外就是检查程序,找出那些大量消耗 CPU 的程序。

所以,最近一段时间,我做了 3 件事:
一、屏蔽恶意流量
其实很早之前就知道一些网站长期存在恶意的机器流量,但无奈,自己不认识,也不知道怎么屏蔽。
这次我用了 Cloudflare 后台网页版的 Agent,让它找出各个网站的恶意流量、机器流量,并让它写出相应的 WAF 规则,然后自己把这些规则填进去。
说实话,这个 Agent 不太好用,但毕竟它直接连着 Cloudflare 的各种数据,所以还是很有用的。当然,虽然它每次都号称要直接设置 WAF 规则,但每次等半天也没反应,只能让它把规则写出来,自己再设置一下。
效果是立竿见影的,请求量有了很大的下降,总的 CPU 时长也明显减少了一些。
二、开启静态化和缓存
部署在 Cloudflare 上的网站大多是基于 Next.js 的。Next.js + OpenNext 的架构本身支持缓存,就是一直没开启过。
所以,我让 Codex 帮我把几个流量大的网站都开启了缓存。对于公开访问的页面——落地页、博客页面——都改用构建时生成静态页面的方法,大幅度减少了每次访问这些页面时的 CPU 时长消耗。

三、优化程序
只要不影响 SEO,那所有能在前端计算和渲染的,都改成前端计算和渲染。
尽量少用自动化程序,比如轮询等。这个一不小心,就会造成大量的 CPU 消耗。
尽量减少动态渲染,能用缓存的就用缓存。
相关文章
Codex+Hyperframes:如何用一句话做一个产品介绍视频
用Codex+Hyperframes插件,只需一句话就能生成产品介绍视频,告别繁琐的视频制作流程。
Codex+Game studio:做游戏的好工具
推荐使用Codex+Game Studio插件制作浏览器小游戏,涵盖2D和3D游戏开发体验,以及基于Phaser引擎的实践分享。
如何使用AI UI Designer生成漂亮的UI和原型
介绍AI UI Designer的最新迭代功能,包括AI生成UI的手动编辑、统一设计系统,以及从规划到导出的完整设计工作流程。