如果把 WordPress 性能优化拆成三层:

  • 源站层:主机 / PHP / 数据库 / 缓存插件 —— 决定 TTFB 和后端压力
  • 资源层:图片优化 —— 决定下载体积与首屏大图速度
  • 交付层:CDN —— 决定资源离访问者更近、命中更稳、源站更轻松

本文讲 CDN 加速

  • 知道 CDN 能解决什么、不能解决什么
  • 选得出适合自己的 CDN 形态与服务商(并理解免费版/入门版边界)
  • 按低风险顺序上线,不把站点搞崩、不把电商/会员缓存出事故
  • 上线后能验证“确实生效”,并能排查“为什么没更新/为什么变慢/为什么串内容”

1. 先把概念说清楚:CDN 解决什么,不解决什么

1.1 CDN 主要解决 3 件事

1.1.1 静态资源更快交付
图片 / CSS / JS / 字体 / 图标等静态资源更接近访问者,下载更快,页面渲染更稳。
对 WordPress 来说,尤其是主题与插件资源(wp-content/themes/wp-content/plugins/)以及媒体库图片(wp-content/uploads/)通常是“体积大户”。

1.1.2 减轻源站压力
命中边缘缓存后,请求不再频繁回源,源站的带宽、并发连接、磁盘 IO、CPU 波动都会更轻。
这对“活动页、文章爆款、产品页被大量访问”这种波峰场景尤其明显。

1.1.3 提升稳定性(更抗波动)
流量尖峰时,边缘节点会吸收大量重复请求,源站更不容易被打爆。
你会看到“访问更平滑”:就算源站瞬间压力上升,边缘缓存仍能持续输出。


1.2 CDN 不会自动解决的 3 类问题

1.2.1 源站本身慢
数据库慢、插件逻辑慢、PHP 计算慢 —— 这些属于源站层问题。
CDN 能把静态资源变快,但你如果连首页 HTML 都生成得很慢,用户还是会觉得“打开就慢”。这时候优先回到:主机/缓存插件/数据库优化。

1.2.2 图片本身太大
CDN 不能把 3MB 的大图“魔法变小”。
你要先做图片优化:尺寸策略(别下载超大图)、压缩、WebP/AVIF、懒加载策略等。

1.2..3 第三方脚本慢
广告、统计、客服、社媒组件等来自第三方域名。
CDN 通常无法帮它们“更快”,你只能通过减少/延后加载、替换供应商、或做脚本策略优化来处理。

建议

先把源站层和资源层做对,再做 CDN,效果会更明显,问题也更少。

2. 30 秒选型:你需要哪一种 CDN 形态?

对 WordPress 来说,主流分两类。你先选“形态”,再选“服务商”,思路会非常清晰。

2.1 一体化“反向代理型”(更省心,适合多数站点)

**特点:**它不仅是 CDN,还把 DNS / SSL / 基础安全防护(如 DDoS/WAF) 一起打包。你接入后,它站在你的网站前面做代理。

你会得到什么:

  • HTTPS 证书与 TLS 管理更简单
  • 统一的安全防护入口(基础 DDoS、访问控制、WAF 等)
  • 边缘缓存与规则引擎(可做更细的缓存策略、绕过策略)
  • “可扩展空间更大”:以后想加安全、限速、Bot 防护,通常都在同一套体系里

**代表:**Cloudflare / 腾讯云国际 EdgeOne / 阿里云国际 ESA

如果你希望:

  • 你希望 HTTPS + CDN + 基础安全 一次做完
  • 你愿意把域名解析/代理层统一交给一个平台管理
  • 你更看重“整体体验与后续扩展”,不想把 DNS、证书、CDN、安全分成多套

2.2 纯“静态 Pull CDN”(低风险起步,主要加速图片/CSS/JS)

**特点:**你只把静态资源放到 CDN 边缘缓存;HTML 页面仍由源站(以及源站缓存插件)负责。

你会得到什么:

  • 很低的业务风险:不碰 HTML 的话,基本不会出现“串内容/串购物车”
  • 成本模型更直观:常见是按流量/请求/区域计费
  • 结构更纯粹:更像“静态资源分发服务”

**代表:**bunny.net(按量计费模型清晰)

如果你希望:

  • 你想先做“最稳的一步”——静态资源加速
  • 你想快速拿到收益,再决定是否上代理型/全站缓存
  • 你希望成本更接近“用多少付多少”

3. 怎么做

  • 第一层:一体化代理型(首选):Cloudflare / EdgeOne / ESA
  • 第二层:静态 Pull CDN(稳妥起步):bunny.net / Cloudways CDN 等

4. 推荐的服务商

4.1 Cloudflare:反向代理一体化(免费起步、生态成熟)

它是什么
你把域名接入后,它作为代理站在网站前面,提供 CDN、证书、基础防护与缓存规则能力。

适合谁

  • 想省心:HTTPS + CDN + 基础安全一条龙
  • 想要成熟生态:后续要加 WAF、限速、边缘规则等,路径很顺

风险点

  • 更新不生效:上线 CDN 后缓存链路变长(浏览器缓存 + CDN 缓存 + 源站缓存),需要“版本策略”让更新可控(后面有排查树)
  • 缓存 HTML 要谨慎:如果缓存 HTML,电商/会员/个性化页面必须严格绕过,否则容易出现严重事故(后面有场景清单)

说明

  • 定位:反向代理一体化(SSL + CDN + 基础防护)
  • 适合:省心上线、后续扩展空间大
  • 核心价值:统一证书/安全/缓存入口
  • 风险:更新靠版本策略;HTML 缓存需严格绕过

4.2 腾讯云中国 EdgeOne:反向代理一体化

它是什么
形态同样是“加速 + 安全 + 证书”的一体化平台,适合把站点放到统一代理层管理。

  • 和Cloudflare一样拥有免费版,但通常会有 配额/功能上限(规则数量、日志任务数量等),但不需要修改DNS,只需要cname接入即可,商业网站不推荐使用免费版
  • 同时免费计划往往意味着 SLA 不保证
    能用,但不要当作“商用 SLA 套餐”。
  • 如果你希望在中国大陆自动切换中国大陆线路,通常需要先完成中国 ICP 备案;未备案时只能走国际线路。

说明:

  • 定位:反向代理一体化(加速 + 安全 + 证书)
  • 适合:希望一体化接入、并考虑中国大陆节点能力
  • 免费:存在免费计划/免费版,但配额有限且 SLA 通常不保证
  • 风险:规则/日志/子域名配额要提前规划;HTML 缓存同样要谨慎

4.3 阿里云中国 ESA:反向代理一体化

  • 和Cloudflare一样拥有免费版,但通常会有 配额/功能上限(规则数量、日志任务数量等),但不需要修改DNS,只需要cname接入即可,商业网站不推荐使用免费版
  • 注册国际站账号即可使用
  • 进入 ESA 控制台添加站点并选择免费的 Entrance 套餐接入
  • 如果你希望在中国大陆自动切换中国大陆线路,通常需要先完成 ICP 备案;未备案时只能走国际线路。
  • 免费更适合开发/测试/评估,通常不等同于商用 SLA 套餐
  • 免费套餐往往会有限速/支持方式限制(例SLA 等)

关于中国大陆线路:

  • 想启用中国大陆节点,通常需要满足备案与区域条件
  • 免费 Entrance 默认走国际线路,希望走中国大陆线路必须完成中国ICP备案要求

说明:

  • 定位:反向代理一体化(站点加速 + 安全)
  • 免费:国际站账号可用 Entrance 免费接入;默认不含中国大陆加速
  • 适合:评估/测试与轻量使用;或后续升级套餐
  • 风险:免费边界要看清(SLA/限速/支持方式);区域与备案要提前规划

4.4 bunny.net:静态 Pull CDN(低风险起步,按量计费清晰)

如果你希望“先把最稳的收益拿到”,bunny 这种 Pull CDN 很适合:
它更像“资源分发服务”:你把静态资源交给它分发,费用通常跟流量/请求/区域有关,模型清晰、可控。

适合:

  • 先做 图片 / CSS / JS / 字体 的静态加速
  • 你想先拿到“低风险且稳定的收益”,不急着把整站交给代理型平台(DNS/SSL/WAF 一体化)
  • 你希望成本模型更接近“用多少付多少”,而不是一开始就进入更复杂的套餐体系

风险点

静态资源“更新不生效”几乎都不是 CDN 的 bug,而是缓存系统的正常表现:
当你在后台更新了 CSS/JS/图片,但资源 URL 没变(同一个地址/文件名/路径),CDN 和浏览器都会合理地继续命中旧缓存,于是你就看到“怎么没更新”。

一个明确、可执行的原则:

版本号优先,Purge 兜底。

为什么这样最稳:

  • 版本号/文件名变化 → URL 变化 → CDN 当作新资源缓存 → 新版本几乎立刻生效
  • **Purge(清缓存)**需要你主动触发,容易范围不准、节点传播有延迟;频繁 Purge 还会导致命中率下降、回源增加、波动变大

容易看懂的例子:

  • style.css 内容改了,但 URL 还是 style.css → CDN 继续给旧缓存(合理)
  • URL 变成 style.css?ver=20260103style.abc123.css → CDN 认为是新资源 → 新版本立刻生效

bunny 作为“第一步 CDN”的最佳实践

  1. 先只覆盖静态资源(图片/CSS/JS/字体),不要一上来就缓存 HTML
    • 好处:几乎不会出现“用户看到别人的内容/购物车串号”这种严重事故
    • 你也更容易验证收益:静态资源更快、源站更轻
  2. 把更新策略设计好
    • CSS/JS:尽量用版本号/文件名变更
    • 图片:尽量避免长期“同名覆盖”,更推荐新文件名/路径变化(尤其是首页 banner、活动图)
  3. 上线后用验证清单确认命中
    • 静态资源是否来自 CDN
    • 命中率是否逐步上升、源站带宽/请求是否更平稳(后面有验证清单)

注意

如果你的业务涉及中国大陆,或者你希望在中国大陆能更快的访问你的网站。

阿里云中国和腾讯云中国均值得你选选择,如果你的域名已经在中国大陆进行ICP备案,使用EdgeOne或ESA时,中国大陆访问时会自动切换中国大陆线路

使用中国大陆节点”通常涉及 ICP 备案

参考

网站跨境访问体验优化”可能是另一种单独能力,通常不等同于“免费就有中国大陆节点”

5. 上线路线图:按 3 个阶段推进(从稳到强)

CDN 上线最容易“搞乱”的原因,是一上来想把所有能力都开满。

阶段 1:只做静态资源 CDN(强烈建议先做)

目标:图片/CSS/JS/字体先走 CDN;HTML 不在 CDN 缓存(或暂时不动)。

为什么先做这个最稳

  • 风险最低:静态资源缓存错了,最多是“样式/图片不更新”,可控
  • 不会触碰登录态、电商流程、账户信息正确性
  • 你能清晰看见收益:静态资源下载更快,源站更平稳

这个阶段常见问题(后面会给排查树)

  • 混合内容(HTTPS 页面加载 HTTP 资源)
  • 静态资源更新不生效(URL 没变)

阶段 2:刷新策略(版本号优先,Purge/失效兜底)

这是“CDN 做得专业不专业”的分水岭。

一条硬规则:

能用版本号/文件名变化解决的更新,不要依赖 Purge。

为什么缓存链路变长后会变玄学:

  • 浏览器缓存:你本地可能缓存了旧 CSS/JS
  • CDN 缓存:边缘节点可能缓存了旧资源
  • 源站缓存:缓存插件/服务器缓存可能还在输出旧内容

如果你没有版本策略,发布就会变成:
“改了东西 → 刷新 → 不行 → 再清缓存 → 还不行 → 再清另一层缓存”
这就是很多人对 CDN 的最大痛点。


阶段 3(进阶):是否缓存 HTML(收益高,但风险最高)

HTML 缓存(全站缓存/边缘缓存)能显著降低 TTFB,但 WordPress 场景里也是事故高发区。

不确定就不要缓存 HTML。先静态 CDN + 源站缓存插件。

如果要缓存 HTML,两条原则:

  1. 只从“访客态”开始:只缓存未登录访客页面
  2. 先写绕过清单:正确性优先,再谈命中率

6. 场景规则清单:不同站点类型怎么做才不出事故

6.1 内容站 / 博客(文章为主、访客多)

推荐

  • 静态资源:全缓存
  • HTML:可考虑缓存“未登录访客页面”

通常需要绕过

  • 后台与登录:/wp-admin/*/wp-login.php
  • 预览/草稿(preview)
  • 搜索结果页(参数变化大,先不缓存最省事)
  • 表单提交/评论提交的 POST 请求

缓存键(Cache Key)最少要区分

  • 是否登录(cookie 维度)
  • 语言(多语言站)

6.2 企业站 / 营销落地页(表单、活动多)

推荐

  • 静态资源:全缓存
  • HTML:公开落地页可缓存(访客态),但要谨慎处理表单结果页

最容易踩的坑:追踪参数导致缓存碎裂
落地页常见 utm_* 参数:

  • 全部参与缓存键 → 缓存被切碎,命中率差
  • 全部忽略 → 少数依赖参数渲染的页面可能不符合预期

6.3 会员站 / 课程站 / 社区(登录态占比高)

结论:HTML 缓存要非常谨慎。
稳妥做法通常是:静态 CDN + 源站缓存/对象缓存;HTML 只缓存访客态。

必须绕过

  • 登录/注册/找回密码
  • 账户中心、订单/订阅、个人资料
  • 任何“用户态强相关”的页面与接口

6.4 电商站(WooCommerce)

最重要的绕过清单

  • 购物车、结算、账户页
  • 订单确认、支付回调相关页面
  • 登录/注册、优惠券/积分等用户态相关入口

为什么电商更容易出事故

  • 一旦用户有购物车、会话、登录态,页面就高度个性化
  • HTML 缓存如果没绕过/没区分状态,最典型后果就是:购物车错乱、账户串号、价格显示异常
    正确性优先,不要为了命中率牺牲正确性。

6.5 多语言 / 多币种站点

推荐

  • 静态资源:全缓存
  • HTML:可缓存访客态,但缓存键必须明确区分语言/币种变体

Cache Key 必须考虑

  • 语言(路径 /en/ /zh/ 或子域 en.
  • 是否登录(cookie)
  • 币种/税率(若影响展示)

7. 风险提示

风险 1:缓存错内容(最严重)

  • 静态资源缓存错:多是样式/图片旧
  • HTML 缓存错:可能串内容、串购物车、串账户 —— 这是严重事故

风险 2:更新不生效(最常见)

缓存链路变长后,“改了没生效”会更常见:

  • 版本号/文件名变更优先
  • Purge/失效兜底
  • 发布流程要可复现(知道每次发布改了哪些 URL)

风险 3:免费版/入门版的承诺边界

  • 免费方案常见特点:配额有限、部分能力不含、SLA/支持方式不等同正式商用

风险 4:中国大陆相关能力容易被误解

  • ESA :希望走中国大陆线路必须进行中国ICP备案
  • EdgeOne :希望走中国大陆线路必须进行中国ICP备案

8 验证清单:上线后怎么确认“真的生效”

8.1 静态资源是否真的走了 CDN?

  • 图片/CSS/JS 是否来自 CDN 域名/边缘节点
  • 是否能看到明显的缓存命中迹象(不同平台的标识不同)

8.2 源站压力是否下降?

  • 源站带宽是否更平稳
  • 源站请求数/连接数是否下降(特别是重复资源的请求)

8.3 更新是否可控?

  • 改一次 CSS/JS 或替换一张图片
  • 新版本是否能通过“版本号变化/文件名变化”快速生效
  • 如果只能靠 Purge 才能更新,说明版本策略还没做好(优先补策略,不要把 Purge 当日常)

8.4 动态关键页是否正确?

(电商/会员站必做)

  • 登录/退出后的页面内容是否正确
  • 购物车/结算/账户相关页面是否始终正确
  • 有没有出现“不同用户看到相同用户态内容”的异常(高危)

8.5 错误率是否上升?

  • 回源超时、5xx、间歇性打不开
  • 这些通常意味着:源站承载不足、规则有误、限速触发、或回源链路问题

9. 更新不生效排查树(把“玄学”变成步骤)

先判断你遇到的是哪一类问题:

9.1 静态资源没更新(CSS/JS/图片还是旧的)

情况 A:只有你自己看到旧,隐身/换设备是新的
优先怀疑:浏览器缓存

  • 解决方向:版本号/文件名变化发布新资源

情况 B:所有人都看到旧(隐身/不同设备也旧)
优先怀疑:CDN 仍命中旧缓存

  • 99% 原因:资源 URL 没变
  • 优先解:版本策略
  • 兜底:Purge(临时手段)

情况 C:图片同名覆盖后一直显示旧图
这是浏览器缓存 + CDN 缓存叠加的经典问题

  • 实用建议:尽量避免长期“同名覆盖”,用新文件名/路径或版本号

9.2 HTML 没更新(页面内容/模块还是旧的)

情况 A:后台/登录后是新的,访客看到旧的
优先怀疑:访客态 HTML 被缓存住了

  • 先确认:这类页面是否应该缓存 HTML
  • 如果应该缓存:需要可控刷新策略,否则发布不可控

情况 B:只有部分地区/部分网络反馈旧内容
优先怀疑:不同边缘节点缓存状态不同

  • 解决方向:用版本/刷新策略收敛差异;必要时做更明确的失效

情况 C:登录用户/购物车出现异常
高危信号:可能缓存错内容了

  • 立即检查是否缓存了用户态页面(购物车/结算/账户等)
  • 检查 Cache Key 是否把“用户态 cookie/语言/币种”等关键变体忽略了

10. 推荐

Cloudflare

  • 反向代理一体化
  • 适合:省心起步
  • 重点:版本策略解决更新;HTML 缓存从访客态做
  • 风险:动态页面必须绕过

腾讯云国际 EdgeOne

  • 反向代理一体化
  • 适合:考虑中国大陆节点能力与一体化接入
  • 免费:有免费计划/免费版,但配额与承诺边界要看清
  • 风险:规则/日志/子域名配额要规划;HTML 缓存谨慎

阿里云国际 ESA

  • 反向代理一体化
  • 免费:国际站账号可用 Entrance 免费接入
  • 风险:免费边界(SLA/支持/限速)与区域/备案条件要提前确认
  • 适合:评估/测试与轻量接入;或后续升级套餐,或考虑中国大陆节点能力与一体化接入

bunny.net

  • 静态 Pull CDN
  • 适合:先做低风险静态加速
  • 重点:版本号优先,Purge 兜底;避免同名覆盖
  • 风险:更新策略没做好会频繁遇到“旧资源”

11. 行动建议

  1. 先选形态:反向代理一体化(Cloudflare/EdgeOne/ESA)还是静态 Pull CDN(bunny)
  2. 按阶段上线:先静态 → 再版本策略 → 最后再考虑 HTML 缓存
  3. 上线后按验证清单检查:命中/回源/更新/动态绕过/错误率
  4. 需要更快:回到“缓存插件”“图片优化”,把源站层与资源层再压一轮

WordPress CDN 常见问题

1. 用了 CDN 为什么还是慢?

最常见原因不是 CDN 没用,而是瓶颈不在“交付层”。

你可以按这个顺序判断:

  • TTFB 仍然很高:说明源站生成 HTML 慢(数据库/插件/缓存插件配置/主机性能)→ 回到源站层优化
  • 首屏大图很慢:说明图片体积、尺寸或格式不对 → 先做图片优化(压缩、WebP/AVIF、尺寸策略)
  • 第三方脚本拖慢:广告/统计/客服脚本常见 → CDN 通常帮不上,需要减少或延后加载
  • 只有某些地区慢:可能是节点覆盖、回源线路、或缓存没命中(命中率低)→ 看命中率与回源情况

CDN 负责把“已优化好的资源”送得更快;源站慢、图片大、脚本慢要分别处理。


2. 为什么我更新了 CSS/JS/图片,但用户还是看到旧版本?

这是 CDN 场景最常见的问题,核心原因通常是:资源 URL 没变,缓存系统会合理继续命中旧缓存。

最稳的处理原则:

  • 版本号优先:让资源 URL 变化(例如 style.css?ver=xxxx 或文件名 hash)
  • Purge 兜底:当你还没建立版本策略时,才用清缓存做临时手段

如果你经常替换首页 banner / 活动图,建议避免“同名覆盖”,优先用新文件名/新路径(更可控)。


3. 我需要缓存 HTML 吗?不缓存会不会就没有意义?

不一定需要。

对很多站点来说,CDN 的最大价值来自:

  • 静态资源(图片/CSS/JS/字体)更快
  • 源站压力下降与稳定性提升

缓存 HTML 的收益确实可能更大(TTFB 会更低),但风险也最大:电商、会员、个性化内容、多语言/多币种都容易缓存错内容。

稳妥路线:

  1. 先做静态 CDN(低风险高回报)
  2. 把版本策略和验证清单跑通
  3. 再评估是否缓存 HTML(从“访客态”开始)

4. 电商站能不能上 CDN?会不会把购物车搞乱?

能上,而且应该上(至少静态资源),但要避免缓存用户态页面。

  • 静态资源可以缓存:图片、CSS、JS
  • 用户态页面必须绕过:购物车、结算、账户相关页面不要缓存 HTML
  • 只要你不对这些页面做 HTML 缓存,发生“串购物车/串账户”的风险就会大幅降低

5. 多语言/多币种站点怎么做 CDN 才不会串语言/价格?

核心在于 Cache Key(缓存键) 是否正确。

  • 语言(路径或子域)
  • 币种(如果影响价格展示)
  • 是否登录(cookie)
  • 地区/税率(如果页面会因地区变化)

如果这些维度不进入缓存逻辑,就很容易出现:A 语言用户看到 B 语言内容,或价格不一致。


6. 我该选反向代理一体化(Cloudflare/EdgeOne/ESA)还是静态 Pull CDN(bunny)?

你可以按“目标”和“风险偏好”选:

  • 想一次搞定 HTTPS + CDN + 基础安全、后续还能扩展规则/WAF:反向代理一体化
  • 想先做最稳的第一步(静态资源更快),不想动整站代理:静态 Pull CDN(例如 bunny)

如果你犹豫,默认建议:先静态 CDN → 跑通版本策略与验证清单 → 再决定是否上代理型/HTML 缓存。


7. 免费版能不能直接用在正式网站?

可以用,但要把“免费”当成“起步/评估/轻量使用”,不要把它当成“带商用 SLA 的正式方案”。

  • 你是否能接受免费方案的配额上限、功能缺失、支持方式差异、以及可能没有 SLA 承诺
  • 如果不能,就应该把免费当作试用,后续升级到更适合的套餐

8. 我怎么确认 CDN 真的生效了,而不是心理安慰?

用这三步确认(不需要任何复杂工具):

  1. 看静态资源是否从 CDN 返回(图片/CSS/JS 的来源是否变化)
  2. 看命中率与回源是否改善(命中上升、回源下降才算真收益)
  3. 改一次 CSS/图片验证更新策略(版本号生效,说明链路可控)

如果你做不到第 3 条,后面越优化越容易被“更新不生效”折磨,建议优先补齐版本策略。


9. 启用中国大陆加速为什么经常会卡住?

最常见原因是:区域选择与备案条件不匹配

  • 若你要选择包含中国大陆的加速区域,通常需要先完成 ICP 备案;未备案只能选不含中国大陆的区域。

10. 我该先装缓存插件还是先上 CDN?

一般建议顺序是:

  1. 源站层:缓存插件/主机基础先稳定(TTFB 下降、后台压力下降)
  2. 资源层:图片优化把体积压下来
  3. 交付层:CDN 把资源送得更快、更稳

如果你现在只想做一件事、又怕翻车:先上静态 CDN(阶段 1),收益稳定,风险最低。