站点图标 高效码农

Cloudflare全链路架构解析:缓存体系如何让你的网站提速30倍?

Cloudflare 全链路深度技术解析:架构原理、缓存体系、区域路由与实战落地

本文内容覆盖 Cloudflare 的网络架构、缓存机制、路由策略、WordPress 站点优化、国内与省级绕过方案、日志与真实 IP 处理、性能优化策略与实际工程落地指南。适合中大型网站架构师、资深运维工程师、SaaS 技术负责人阅读。


一、Cloudflare 的全球网络与架构原理

Cloudflare 的核心价值源于其 全球 Anycast 网络边缘执行架构。理解其内部工作方式,是进行缓存调优、区域路由和故障排查的前提。

1.1 Anycast + 边缘 POP 工作机制

Cloudflare 通过 Anycast 将全球数百个 POP 节点公告为同一个 IP 段。用户请求会自动路由到距离最近(或最不拥堵)的 Cloudflare 节点。

链路结构:

Browser → Local ISP → Anycast Routing → Nearest Cloudflare POP → Edge Compute Layer → Origin

POP 内部包含多层逻辑:

  • L4 入站层:连接处理、TLS 握手、WAF 模块
  • Cache Layer:静态缓存、多级缓存、命中/回源策略
  • Worker 运行层:用户脚本执行、边缘重写、流量分流
  • Routing Layer:决定是否回源、按国家/城市判断、计费层判断

1.2 Cloudflare 的多级缓存体系(从全球到本地)

Cloudflare 的缓存并不是单层,而是三层:

① Edge Cache(最近节点缓存)

每个 POP 自己的本地缓存,命中速度最快,但内容会因地域差异而不同。

② Regional Cache(区域级缓存)

区域 POP(例如新加坡、法兰克福)作为多个边缘节点的上级缓存,可显著降低跨区域回源。

③ Tiered Cache(企业/部分付费计划)

允许特定 POP 在回源前,先向上游 Tier-1 POP 查询,进一步减少源站压力。


二、缓存命中原理与策略设计(架构师必须理解的部分)

Cloudflare 缓存策略优先级高度复杂,核心在于三个关键:

  1. 缓存键(Cache Key)构成
  2. 页面规则(Page Rules)与 Worker 优先级
  3. 响应头和 Cookie 影响缓存行为

2.1 Cloudflare Cache Key(缓存键)

默认缓存键包含:

Scheme + Host + Path + Query

但所有的差异项(例如 Cookie、Query 变化)都可能导致无法命中缓存。

2.2 Cookie 对缓存的破坏性

默认规则:

  • 只要响应头中有 Set-Cookie,Cloudflare 绝不缓存 HTML
  • 只要请求中包含某些动态 Cookie(如 wordpress_logged_in_),Cloudflare 会回源而不缓存。

WordPress 场景下,这点至关重要。

2.3 Page Rules / Transform Rules / Worker 的执行优先级

优先级(从高到低):

Worker > Transform Rules > Page Rules > Origin Response Headers

所以:

  • Worker 可覆盖所有缓存逻辑
  • Page Rule 是快速解决方案但能力有限
  • 原始服务器 Cache-Control 仅在上游规则未覆盖时生效

三、WordPress + Cloudflare:高流量站点最佳实践

WordPress 是典型的“动态核心 + 静态外壳”框架。如果合理利用 Cloudflare,可以将分类页、标签页、文章页全部边缘缓存,大幅降低 PHP-FPM 压力。

3.1 可安全缓存页面(HTML)

适合缓存:

  • 分类页 /category/*
  • 标签页 /tag/*
  • 文章页 /post-name/
  • 图片和静态资源

不适合缓存:

  • /wp-admin/*
  • /wp-login.php
  • 含 preview 的草稿页面
  • 含用户个性化内容的页面

3.2 Page Rules 示例(强缓存 HTML)

URL: example.com/category/*
设置:
- Cache Level: Cache Everything
- Edge Cache TTL: 1 day

3.3 后台不被缓存的保护规则

URL: *example.com/wp-admin*
Cache Level: Bypass

四、国内/区域流量不走 Cloudflare(国内+河北省案例)

很多站点希望:

  • 全球走 Cloudflare(享受 CDN)
  • 中国大陆直连源站(避免绕路)
  • 河北/石家庄用户单独策略(行业需求)

Cloudflare 本身只支持 国家级别 Geo Routing;不支持省级路由。因此必须选择架构方案。

4.1 方案 A:GeoDNS(推荐)

通过 DNS 服务商判断来源国家/省份,给出不同域名的返回结果:

  • 国外 → www.example.com(橙云)
  • 中国 → cn.example.com(灰云直连)
  • 河北 → 可映射第三域名或特殊线路

优点:

  • 地区控制精确
  • 不依赖 Cloudflare Worker
  • 可维持复杂策略(省级/市级)

4.2 方案 B:Cloudflare + 源站 GeoIP(进阶)

流程:

用户 → Cloudflare POP → 源站 → 源站判断 IP → 动态返回缓存策略

可通过源站:

  • 使用 MaxMind GeoIP2 查询省级信息
  • 若在河北 → 设置 Cache-Control: private 或重定向至未代理域名

4.3 方案 C:Worker 进行国家级路由

只能做到国家级,例如:

if (request.cf.country === "CN") {
   return fetch(direct_origin_url);
}

无法精确到省级。


五、真实客户端 IP 恢复(宝塔 + Nginx)

由于 Cloudflare 反向代理,你在日志中看到的全是 Cloudflare 节点 IP。要恢复真实用户 IP,必须启用 real_ip 模块。

5.1 Nginx 配置

set_real_ip_from <Cloudflare-IP-Range>;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;

必须使用 Cloudflare 官方提供的 IP 段,否则会存在 IP 伪造风险。


六、Cloudflare 性能优化体系(Speed / Optimization)

如果控制面板中找不到 Optimization 面板,多半是:

  • 套餐等级不同
  • UI 迁移(Cloudflare 经常改界面)
  • 权限不同

核心优化项:

  • Brotli
  • Auto Minify (HTML/CSS/JS)
  • Early Hints
  • Image Optimization
  • HTTP/3 + QUIC
  • Tiered Cache(付费)

七、Cloudflare for SaaS:多租户架构能力

适用于:

  • 提供 SaaS 平台,需为每个租户创建独立自定义域名
  • 提供统一证书管理、加速与安全

优点:

  • 多租户证书自动化管理
  • 边缘加速共享
  • 自定义域名接入更简单

缺点:

  • 架构复杂度高
  • 日志隔离、计费策略需要额外设计

八、架构决策指南(适用于大型站点)

如果你的网站:

  • 流量大 → 使用 Cache Everything + Tiered Cache
  • 中国用户多 → 考虑 GeoDNS + 国内直连
  • 需要个性化 → 用 Workers 处理 Cookie 与缓存键
  • 是 SaaS 平台 → 用 Cloudflare for SaaS

九、操作清单(可立即执行)

  1. 配置真实 IP 恢复(Nginx real_ip)
  2. 分类/标签/文章页启用 Cache Everything
  3. 后台走 Bypass
  4. 若需要国内不走 CDN → 使用 GeoDNS 方案
  5. 开启 Brotli / Auto Minify
  6. 若高流量 → 考虑 Workers 管理缓存键

1. 为什么你需要 Cloudflare 技术体系化?

你之前零散问过几十个 Cloudflare 相关问题,包括:

  • 国内不缓存 / 指定地区绕过 CDN
  • 河北省、石家庄等精确地区放行策略
  • Cache 控制:分类/标签缓存、动态页面不缓存
  • Cloudflare for SaaS
  • Bot Fight Mode
  • 如何与国内源站共存
  • WordPress 场景优化
  • API、缓存、Edge、Worker 的组合策略

这些内容看似杂乱,但在架构层是有统一逻辑的:Cloudflare = 全球网络分发 + 智能流量控制 + 安全策略统一入口

下面我们通过体系结构图把整个 Cloudflare 使用方式拉通。


2. Cloudflare 体系结构图(Mermaid)

flowchart TD
    A[用户访问者<br/>国内/海外] -->|DNS解析| B(Cloudflare 全局 CDN POP)

    subgraph CF[Cloudflare Edge 平台]
        B --> C1{区域判断<br/>GeoIP 规则}
        C1 -->|国内| C2[国内不缓存 / 直连源站]
        C1 -->|河北省| C3[指定省份放行规则]
        C1 -->|海外| C4[走全球 CDN 缓存]

        C4 --> C5[自定义缓存规则<br/>分类/标签缓存设置]
        C2 --> C6[WAF / Bot Fight Mode]
        C5 --> C6
    end

    C6 --> D[源站服务器(国内机房)]

    subgraph WP[WordPress 层]
        D --> E1[文章页]
        D --> E2[分类页 Category]
        D --> E3[标签页 Tag]
        D --> E4[XMLRPC / API]
    end

    E1 --> F1[HTML 缓存策略]
    E2 --> F2[Page Rule: 缓存分类]
    E3 --> F3[Page Rule: 缓存标签]
    E4 --> F4[安全白名单 / 限速]


3. Cloudflare 国内绕行策略(核心)

你最常问的:如何让国内不走 CDN?

Cloudflare 默认没有“中国大陆”独立区域,但可以通过 GeoIP + Transform Rule + Cache Rule 组合实现:

✔ 方案架构(逻辑图)

flowchart LR
    A[请求进入 CF POP] --> B{判断访客地区}
    B -->|国内| C[Cache: Bypass + "Origin Pull"]
    B -->|河北省| D[Allow + Firewall Skip]
    B -->|海外| E[Cache Everything]

最佳实践:

  • 国内:Cache: Bypass + Origin Cache-Control + Tiered Cache OFF
  • 海外:Cache Everything + Edge TTL + APO(WordPress) 可选
  • 特定省份:Firewall → Allow → Skip WAF

4. WordPress 分类/标签缓存方案

你的需求:分类、标签缓存;国内不缓存。

Cloudflare 的 Page Rule(或 Cache Rule)可实现:

分类(Category)

https://yourdomain.com/category/*
Cache: Cache Everything
Edge TTL: 2-8 hours

标签(Tag)

https://yourdomain.com/tag/*
Cache: Cache Everything

动态页不缓存

以下路径强制 Bypass:

/wp-admin/*
/wp-login.php
/xmlrpc.php

国内绕行策略合并

使用 Rule 优先级:

  1. 国内 IP → Bypass
  2. 管理后台 → Bypass
  3. 分类/标签 → Cache Everything

5. Cloudflare for SaaS 总结

你之前问过 Cloudflare for SaaS 的优缺点,现在整理如下:

优点

  • 客户自有域自动接入 Cloudflare
  • 自带 SSL、WAF、DDoS
  • 支持 Workers、Transform、Routing
  • 可做平台级产品(例如 Notion 类平台)

缺点

  • 配置较复杂
  • 国内访问仍受 GFW 路径影响
  • 对源站稳定性要求高

6. 常见问题统一解答

Q1:Bot Fight Mode 在哪里?

路径:

Security → Bots → Bot Fight Mode

Q2:如何开启压缩优化?

Speed → Optimization
- Brotli: ON
- Minify HTML/CSS/JS: ON
- TLS1.3: ON

Q3:如何让 XMLRPC 安全访问?

  • 使用 API Key Header 白名单
  • 限速规则 Rate Limit

Q4:Cloudflare 国内访问快吗?

取决于:

  • 线路(电信/移动/联通)
  • 当前中国防火墙路由(是否绕路)
  • 使用国内源站直连模式可获得最佳性能

7. 最终体系化结论

你的 Cloudflare 使用场景主要包括:

  • 国内绕行缓存体系(最核心)
  • WordPress 缓存优化(分类/标签)
  • API、XMLRPC 白名单安全体系
  • Cloudflare for SaaS 架构分析

退出移动版