Cloudflare:如何降低CPU使用时长?
开发

Cloudflare:如何降低CPU使用时长?

· 1 分钟阅读

我在 Cloudflare 上部署了很多网站,CPU 使用时长一直居高不下。每个月 Cloudflare 的账单上,CPU 时长费用都要占 80% 以上。最近实在忍无可忍,开始各种折腾,想办法降低 CPU 使用时长。

先搞明白 CPU 使用时长是怎么算的

要降低 CPU 使用时长,首先要搞明白它是怎么计算的。公式如下:

CPU 时间费用 = (每请求平均 CPU ms × 请求数 - 包含的免费 CPU ms) ÷ 1,000,000 × $0.02

看这个公式就知道,想省钱,其实就是两条路:降低请求数,以及降低每次请求的 CPU 时长。

先说降低请求数。流量大的网站,请求数肯定大,但除了真流量,还有一个大增项——各种爬虫和机器流量。正常的 Google、ChatGPT 等搜索引擎和 AI 的爬虫是不能屏蔽的,除非你不想要它们带来的流量。除此之外,很多网站都有大量恶意的机器流量,这些才是要屏蔽掉的。

至于降低每次请求的 CPU 时长,最直接的方法就是把网站静态化,充分使用缓存。另外就是检查程序,找出那些大量消耗 CPU 的程序。

Cloudflare CPU 降本总览:屏蔽恶意流量、静态化与缓存、优化程序

所以,最近一段时间,我做了 3 件事:

一、屏蔽恶意流量

其实很早之前就知道一些网站长期存在恶意的机器流量,但无奈,自己不认识,也不知道怎么屏蔽。

这次我用了 Cloudflare 后台网页版的 Agent,让它找出各个网站的恶意流量、机器流量,并让它写出相应的 WAF 规则,然后自己把这些规则填进去。

说实话,这个 Agent 不太好用,但毕竟它直接连着 Cloudflare 的各种数据,所以还是很有用的。当然,虽然它每次都号称要直接设置 WAF 规则,但每次等半天也没反应,只能让它把规则写出来,自己再设置一下。

效果是立竿见影的,请求量有了很大的下降,总的 CPU 时长也明显减少了一些。

二、开启静态化和缓存

部署在 Cloudflare 上的网站大多是基于 Next.js 的。Next.js + OpenNext 的架构本身支持缓存,就是一直没开启过。

所以,我让 Codex 帮我把几个流量大的网站都开启了缓存。对于公开访问的页面——落地页、博客页面——都改用构建时生成静态页面的方法,大幅度减少了每次访问这些页面时的 CPU 时长消耗。

静态化与缓存流程:构建时生成静态页面,访问时优先复用缓存,未命中则获取内容并缓存

三、优化程序

只要不影响 SEO,那所有能在前端计算和渲染的,都改成前端计算和渲染。

尽量少用自动化程序,比如轮询等。这个一不小心,就会造成大量的 CPU 消耗。

尽量减少动态渲染,能用缓存的就用缓存。

独立产品人日记

记录独立产品、AI 工具、增长方法和技术实践。

相关文章