Cloudflare Pages 做静态站点托管确实省心,代码推上去自动构建部署,免费额度也够用。但国内访问体验一直不太行,延迟高、偶尔打不开,对读者来说不太友好。

换平台成本太高,也不想放弃 Git 推送自动部署的便利。折中方案是用腾讯云 EdgeOne 国际版在 CF Pages 前面做一层加速,这样既不用迁移,国内访问也能快不少。

下面是我的配置过程和一些踩过的坑。

整体思路

  • Cloudflare Pages 继续负责托管和自动部署,相当于源站。
  • EdgeOne 作为 CDN 和安全防护层,用户请求先到 EdgeOne,命中缓存就直接返回,没命中才回源到 CF Pages 拿内容。

流量路径:用户 → EdgeOne 边缘节点 → CF Pages(源站)

配置步骤

第一步:EdgeOne 添加站点

登录 EdgeOne 控制台,点击添加站点,填入你的根域名(如 yourdomain.com)。套餐和服务区域按需选择,想优化国内访问的话选中国大陆(如果实名)或全球即可。

第二步:添加加速域名并配置回源

在站点内找到域名管理,添加用户实际访问的域名,比如 blog.yourdomain.com。关键是下面的回源配置:

  • 源站地址:直接填 CF Pages 分配的默认域名,像 your-project.pages.dev,不需要额外绑自定义域名。
  • 回源协议:选 HTTPS,端口 443。CF Pages 只接受 HTTPS,选 HTTP 后面会出问题。
  • 回源 HOST 头:选择“使用源站域名”,值会自动填充为 your-project.pages.dev
    这一步最容易被忽略。如果回源 HOST 不改成和源站一致,EdgeOne 就会把用户访问的 blog.yourdomain.com 带给 CF,CF 不认识这个域名,直接返回 404。

推荐模板可以选“网站加速”,适合静态资源为主的站点。
EdgeOne配置

第三步:证书和 DNS

先去你的 DNS 服务商那里,把 blog.yourdomain.com 的解析改成 CNAME,记录值填 EdgeOne 分配的那个 *.edgeone.com 地址。

然后回到 EdgeOne 的证书管理,给这个域名申请一张免费证书。CNAME 解析生效后,几分钟就能签发下来。

遇到的问题和优化

1. 无限重定向

如果浏览器报“重定向次数过多”,大概率是 EdgeOne 回源用了 HTTP,而 CF 那边强制 HTTPS。CF 收到 HTTP 请求会返回 301 重定向到 HTTPS,EdgeOne 又用 HTTP 去请求,形成死循环。把回源协议改成 HTTPS 就能解决。

2. 缓存策略

CF Pages 默认响应头 max-age=0,中间 CDN 不会缓存。这样每次请求都要回源,加速效果很有限。

可以在 EdgeOne 的规则引擎里加一条规则:对 *.js*.css*.png*.jpg 这类静态资源设置强制缓存,时间设 7 到 30 天都行。首次加载之后会快很多。

3. 安全防护

EdgeOne 自带的 WAF 和 CC 防护可以顺手打开,恶意请求在边缘节点就被拦下,不会影响到源站。

总结

这套方案我用了一段时间,国内各地访问延迟从 300ms 以上降到了 30-40ms 左右,打开速度快了很多,同时也不需要改动原有的部署流程。如果你也遇到 CF Pages 国内访问的问题,可以试试这个思路。