边缘计算实战:用 Cloudflare Pages 把 TTFB 拉下来

把站点放到边缘,不等于性能自动起飞。本文从网络距离、缓存命中、动态逻辑下沉、回源策略与观测体系五个维度,讲清 Cloudflare Pages 和边缘函数真正能解决什么,不能解决什么。

13 分钟阅读
小明

边缘计算实战:用 Cloudflare Pages 把 TTFB 拉下来

很多团队第一次听到“边缘计算”,眼睛会瞬间发亮:

代码离用户更近了,那岂不是所有页面都会快?

理想很丰满,现实通常是:

  • 静态资源确实更快了
  • 某些页面的 TTFB 也降了
  • 但复杂动态接口依旧慢
  • 数据库一旦还在单一区域,远距离回源还是要花钱也花时间

所以边缘计算最需要的不是热情,而是边界感。

Cloudflare Pages 很强,但它不是“全球加速魔法”,它只是给了你一个机会:

把真正值得靠前执行的逻辑,挪到离用户更近的地方。


1. 边缘真正优化的是什么

很多人把边缘优化理解成“让一切都更快”。

更准确的说法是:

它优先优化的是网络往返距离,以及那些可以在边缘就被拦截、命中、生成的响应。

因此你最容易受益的内容有三类:

  1. 静态资源
  2. 弱动态 HTML
  3. 轻量计算和路由裁决逻辑

最不容易直接受益的,是强依赖中心化数据库的复杂动态接口。


2. Cloudflare Pages 适合下沉什么逻辑

2.1 静态资源与页面外壳

这部分最直接,收益也最稳。

比如博客、文档、营销页、产品介绍页,它们的 HTML、CSS、图片本来就适合全球分发。

2.2 轻度个性化路由

例如:

  • 根据国家或语言跳转站点版本
  • 根据实验分组返回不同变体
  • 读取 cookie 做轻量主题切换

这种逻辑在边缘做,能避免请求先跑到中心区域再决定“你该看哪个版本”。

2.3 缓存友好的聚合接口

如果某个接口本质是:

  • 变化不算特别频繁
  • 对每个用户差异不大
  • 但调用量很大

那它就适合边缘缓存甚至边缘计算预处理。


3. 不适合硬塞到边缘的东西

边缘不是用来炫技的。以下场景强行下沉,常常得不偿失:

  • 每次都要访问中心数据库的高一致性写操作
  • 需要大量 CPU 的数据处理任务
  • 依赖复杂内网资源和专有连接的业务

一句话:

如果你的主要耗时还在后方系统,边缘最多只能把“路”缩短,不能把“工厂”搬走。


4. 一个实用架构:边缘负责拦截、缓存、裁决,中心负责重业务

比较稳妥的做法是把职责分开:

层级负责什么不负责什么
边缘就近分发、缓存命中、轻量重写、实验分流复杂事务、重型数据聚合
中心应用核心业务逻辑、权限、聚合、写操作全球低延迟分发
数据层真正的数据一致性与持久化页面分发与流量吸收

当你这样拆,系统会更稳定。因为每一层都在做自己擅长的事。


5. 一个边缘函数例子:让弱动态页面先就近命中

export async function onRequestGet(context: {
  request: Request
  next: () => Promise<Response>
  env: Record<string, string>
}) {
  const cacheKey = new Request(context.request.url, context.request)
  const cache = caches.default

  const cached = await cache.match(cacheKey)
  if (cached) {
    return cached
  }

  const response = await context.next()

  if (response.ok) {
    const headers = new Headers(response.headers)
    headers.set('Cache-Control', 'public, s-maxage=300, stale-while-revalidate=600')

    const cachedResponse = new Response(response.body, {
      status: response.status,
      headers,
    })

    context.waitUntil(cache.put(cacheKey, cachedResponse.clone()))
    return cachedResponse
  }

  return response
}

这个例子并不复杂,但它说明了边缘最有价值的一点:高频重复请求,尽量别老往中心打。


6. TTFB 真正下降,通常要靠三件事一起发生

6.1 页面壳体能就近返回

如果 HTML 或关键片段能在边缘直接命中,首字节自然会更早到。

6.2 回源次数被减少

边缘最怕“看似部署在全球,实则每次都回家问一遍”。

6.3 回源内容被做成更高命中率的结果

很多接口不适合用户级缓存,但适合做区域级、语言级、活动级缓存。缓存粒度设计得好,边缘价值才出来。


7. 做边缘项目,最容易低估的是观测成本

边缘把逻辑拉近用户,也把问题分散到了全球。

因此你至少要有:

  • 区域维度的命中率指标
  • 回源率和回源耗时
  • 函数错误日志和超时记录
  • 关键页面在不同国家的 TTFB 采样

否则你只能知道“有时候很快”,却不知道“哪里还在慢”。


8. 关于成本的一个清醒判断

边缘计算的价值,不只是省几百毫秒,而是把高频流量拦在更便宜、更稳定的地方。

但它也会带来新的管理成本:

  • 缓存失效更复杂
  • 调试链路更长
  • 不同区域行为差异更难定位

所以判断是否值得,不要只看技术酷不酷,要看:

  1. 你的用户是否跨地区明显分布
  2. 你的内容是否足够缓存友好
  3. 你的团队是否有能力经营缓存策略与观测体系

总结

  • Cloudflare Pages 和边缘函数最擅长的是缩短网络距离、提升缓存命中、下沉轻逻辑。
  • 真正的复杂业务仍应留在中心应用和数据层。
  • 边缘不是万能加速器,而是一次职责重新分配。
  • 做得好,TTFB 会明显改善;做不好,只是把复杂度搬到了更远的地方。

小明收尾一句:

边缘的本质,不是把所有东西都搬到前线,而是让真正值得提前处理的事情,别再排队排到总部去。