如果把 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=20260103或style.abc123.css→ CDN 认为是新资源 → 新版本立刻生效
bunny 作为“第一步 CDN”的最佳实践
- 先只覆盖静态资源(图片/CSS/JS/字体),不要一上来就缓存 HTML
- 好处:几乎不会出现“用户看到别人的内容/购物车串号”这种严重事故
- 你也更容易验证收益:静态资源更快、源站更轻
- 把更新策略设计好
- CSS/JS:尽量用版本号/文件名变更
- 图片:尽量避免长期“同名覆盖”,更推荐新文件名/路径变化(尤其是首页 banner、活动图)
- 上线后用验证清单确认命中
- 静态资源是否来自 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,两条原则:
- 只从“访客态”开始:只缓存未登录访客页面
- 先写绕过清单:正确性优先,再谈命中率
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. 行动建议
- 先选形态:反向代理一体化(Cloudflare/EdgeOne/ESA)还是静态 Pull CDN(bunny)
- 按阶段上线:先静态 → 再版本策略 → 最后再考虑 HTML 缓存
- 上线后按验证清单检查:命中/回源/更新/动态绕过/错误率
- 需要更快:回到“缓存插件”“图片优化”,把源站层与资源层再压一轮
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 会更低),但风险也最大:电商、会员、个性化内容、多语言/多币种都容易缓存错内容。
稳妥路线:
- 先做静态 CDN(低风险高回报)
- 把版本策略和验证清单跑通
- 再评估是否缓存 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 真的生效了,而不是心理安慰?
用这三步确认(不需要任何复杂工具):
- 看静态资源是否从 CDN 返回(图片/CSS/JS 的来源是否变化)
- 看命中率与回源是否改善(命中上升、回源下降才算真收益)
- 改一次 CSS/图片验证更新策略(版本号生效,说明链路可控)
如果你做不到第 3 条,后面越优化越容易被“更新不生效”折磨,建议优先补齐版本策略。
9. 启用中国大陆加速为什么经常会卡住?
最常见原因是:区域选择与备案条件不匹配。
- 若你要选择包含中国大陆的加速区域,通常需要先完成 ICP 备案;未备案只能选不含中国大陆的区域。
10. 我该先装缓存插件还是先上 CDN?
一般建议顺序是:
- 源站层:缓存插件/主机基础先稳定(TTFB 下降、后台压力下降)
- 资源层:图片优化把体积压下来
- 交付层:CDN 把资源送得更快、更稳
如果你现在只想做一件事、又怕翻车:先上静态 CDN(阶段 1),收益稳定,风险最低。