
网站做完了辛辛苦苦上线了用户打开却一直在转圈圈图片刷不出来页面卡得人想摔手机。我帮朋友排查网站加载慢的问题好几年了十个案例里八个最后都落到同一个解决方案上把网站接入 CDN。这期就围绕网站CDN加速哪个好这个话题把免费 CDN 怎么选、怎么接入、有哪些坑一次讲透。文章会推荐 10 个有免费套餐的 CDN 服务商按场景给出选型建议并附上我自己的接入实测记录。无论你是个人博客站长、前端开发者还是企业官网、电商项目的负责人这份清单都能帮你少走不少弯路。1. 为什么网站需要CDN:先搞懂加速的本质1.1 网站变慢到底卡在哪一环很多站长对网站慢这件事只有一个模糊的感受但实际上慢可以拆解成几个不同的环节。第一个是 DNS 解析用户在浏览器输入域名后本地 DNS 要去递归查询、逐级找到权威服务器这个等待过程通常在几十到几百毫秒不等配置不当的情况下甚至可能超过 1 秒。第二个是网络链路的物理距离如果源站服务器在某个城市而用户分布在各地甚至海外数据包要在主干网上走过很长一段距离延迟自然高。第三个是源站的处理能力和带宽服务器带宽小、CPU 负载高或者后端数据库响应慢都会让每个请求变得很慢。用一个生活中的类比来理解会更容易你家附近只有一家大型书店每次买书都得专门跑过去费时费力还不一定买得到。后来书店在各大小区门口都设了书架提前把热门书目放在离你最近的地方你去楼下就能拿到书省去了路上的时间也减轻了总店的压力。CDN 就是这个分布在各个小区门口的书架网络它的正式名称是内容分发网络核心思路就是把内容搬到离用户更近的地方。1.2 CDN做了三件事缓存、调度、回源CDN 系统表面上听着很复杂但归结起来核心就三件事。第一是缓存把源站上的静态资源比如图片、CSS、JavaScript 文件、字体文件、视频文件复制到全球各地的边缘节点上。第二是调度当用户发起请求时CDN 的全局负载均衡系统会根据用户的 IP 归属地、运营商、节点当前负载和网络质量自动选择一个最优节点来响应用户。第三是回源如果用户请求的资源在边缘节点上没有命中节点会代替用户去源站拉取一次内容存到本地之后再返回给用户后续再有相同请求就直接命中缓存。理解这三件事之后你就能明白 CDN 不是万能的。它最擅长加速的是能被缓存的内容比如静态图片、样式文件、脚本、视频、安装包这类资源天然适合缓存加速效果立竿见影。而对于登录状态、购物车、实时 API 接口这类动态内容CDN 层面往往只能做透传和有限度的优化加速效果有限。很多第一次用 CDN 的人接完之后发现网站还是慢大概率是因为没搞清楚哪些请求该走缓存、哪些该直接回源。这个观念搞清楚了后面选 CDN、配缓存规则才不至于一头雾水。2. 挑选免费CDN必须看懂的5个关键指标2.1 节点覆盖免费套餐和付费套餐的差距在哪不同 CDN 服务商的免费套餐节点覆盖情况差异非常大。有的服务商免费版只开放部分节点或者限制某些高级调度策略加速效果会打折扣。有的服务商虽然全球节点很多但在某些地区并没有优势节点实际体验反而不如区域型服务商。我建议先想清楚网站的主要访客在哪个区域再去评估节点覆盖。海外 CDN 服务商如 Cloudflare全球节点数量非常庞大但它在国内并没有直接的 CDN 节点国内访客访问时可能会有明显的网络波动。国内服务商如腾讯云、阿里云大陆节点覆盖非常完善延迟低、稳定性高但面向海外访客时节点覆盖相对有限。所以在看节点数量宣传时千万不要只看总数要看对你目标访客所在区域实际生效的节点有多少。解决办法也很简单接完以后用在线拨测工具在不同地区分别测试拿数据说话比自己猜靠谱得多。2.2 HTTPS支持免费证书、强制跳转、回源协议现在网站全站 HTTPS 已经是基本要求了免费 CDN 通常都提供免费的 SSL 证书能够自动申请并续期这是很大的成本优势。但这里有个关键设置常常被忽略CDN 到用户之间的链路是 HTTPSCDN 到源站之间的回源链路既可以走 HTTP 也可以走 HTTPS。如果你的源站本身没有部署有效证书CDN 层可以选择仅加速 HTTP或 Flexible 模式用户到 CDN 是加密的CDN 到源站则用 HTTP 明文传输。这种方式最省事但严格来说源站和数据链路上存在被窃听的风险。如果源站已经部署了有效且可信的证书我建议把回源方式设置为 Full (Strict) 模式能最大程度保证链路安全。很多新手在这里犯了错把模式设成 Flexible但源站又配置了 HTTP 强制跳转 HTTPS结果出现无限重定向循环页面直接打不开。这个细节我在后面常见问题部分会专门展开讲。2.3 免费额度的隐形门槛流量、请求数、刷新次数免费 CDN里最值得琢磨的就是免费额度到底包含什么。一部分服务商给的是流量包按 GB 计算这个比较好理解。但有些服务商会额外限制 HTTPS 请求数意思是即使流量没超请求次数超了也会开始计费或限制服务。像阿里云、腾讯云的新用户免费体验包通常是一定 GB 流量 一定万次 HTTPS 请求的组合用之前最好去计费说明页看仔细。更隐蔽的是缓存刷新的配额。CDN 加速的内容有 TTL 缓存时间更新源站文件后节点本地缓存不会立即失效需要主动刷新或预热。免费套餐里刷新 URL 和刷新目录的次数通常有每日配额限制有些服务商对这个配额卡得比较严。如果你的站点更新频繁每天要刷新大量资源免费配额可能很快就用完了。我见过不止一个开发者因为缓存刷新配额不够在群里急得团团转发布新版本之后用户看到的还是老页面。所以选免费 CDN 时刷新和预热的配额数量和超额后的处理方式一定要提前确认。2.4 缓存规则和过期时间免费版能不能精细控制CDN 加速效果好不好很大程度上取决于缓存规则配得细不细。最基础的是 TTL 设置每种资源类型、每个路径下的资源缓存多久都需要按实际情况调整。比如图片和静态文件可以缓存 7 天到 30 天HTML 页面建议只缓存很短时间或者不缓存。但免费版往往在缓存规则的条数上有严格限制比如 Cloudflare 免费版页面规则只有 3 条这意味着你需要把最重要的规则尽量合并用最少的规则覆盖绝大多数场景。另一个容易忽略的参数是忽略查询字符串或缓存 Key设置。很多静态资源会带版本号参数比如 app.js?v3.1.2如果开启了忽略查询字符串用户请求的 URL 即使参数不同也可能命中同一个缓存版本这在发布新版本时会带来严重的缓存污染。建议对于静态资源保留查询参数参与缓存判断或者在发布时直接修改文件名从根本上绕过缓存问题。这些细节决定了免费套餐在实际使用中到底能发挥多少价值不能只看厂商宣传的加速倍数。2.5 备案要求与数据合规免费不等于没有前提国内云厂商的 CDN 加速服务在大陆节点上提供服务时通常要求域名已经完成 ICP 备案。这是使用国内 CDN 产品时绕不开的前提条件如果域名没有备案即便开通了 CDN服务可能也无法使用大陆节点。所以选型前先确认自己的域名备案状态如果还没备案直接选国内服务商大概率会卡在这一步。海外 CDN 服务商没有境内备案这个要求任何域名都能快速接入但前文已经提过它面向国内访客的访问体验存在波动。除备案之外数据合规也需要留意CDN 节点分布在不同国家网站日志和用户请求数据可能在境外节点产生和留存如果你的业务涉及隐私数据要提前了解服务商的日志策略和隐私协议不要为了省一点加速费用给自己埋下隐患。整体来说域名在境内备案就优先考虑国内厂商面向海外访客则用海外 CDN合规和体验两头都要兼顾。3. 10个免费CDN加速推荐清单和适用场景3.1 Cloudflare免费额度最慷慨的全球方案Cloudflare 的免费套餐在业内相当出名不限流量提供全球范围内的网络加速同时附带免费的 SSL 证书、DDoS 基础防护和 Web 应用防火墙基础功能。个人博客、开源项目、外贸独立站、出海 SaaS 站点都可以用它。免费版页面规则限制为 3 条但日常场景基本够用。需要注意Cloudflare 在国内没有直连节点国内访客的访问速度波动较大建议接入前用多地拨测工具实际测一下如果主要访客都在海外Cloudflare 基本是首选。3.2 腾讯云CDN新用户免费额度国内低延迟腾讯云 CDN 对新用户通常提供免费体验包包含一定量的流量和 HTTPS 请求额度国内节点覆盖完善延迟低。控制台上的缓存配置、刷新预热、统计分析功能都比较完整对国内个人站和中小型企业站很友好。需要提醒的是使用大陆节点要求域名完成 ICP 备案如果域名还没有备案只能先跳过。新用户额度用完之后如果不再续费服务会恢复为按量计费或停服建议开通时确认清楚到期后的具体策略。3.3 阿里云CDN免费试用流量包最稳的选择阿里云 CDN 的新用户免费试用方案通常是赠送流量包和 HTTPS 请求包试用期不算短足够把网站的真实加速效果测出来。它家的 CDN 节点覆盖广尤其是国内市场。对于已经备案的企业官网、电商站点阿里云 CDN 是一个很稳妥的选择。控制台支持缓存刷新、文件预热、访问控制、日志管理该有的功能都有。同样要注意免费试用额度到期后的计费规则以及刷新配额的限制。3.4 百度智能云CDN搜索生态联动百度智能云也提供新用户免费体验流量包国内节点覆盖不错控制台支持缓存配置、防盗链、日志分析还内置了防刷机制。如果你的站点比较依赖百度搜索流量用百度智能云 CDN 在生态联动上会方便一些其他方面与阿里云、腾讯云 CDN 大同小异建议统一按谁家控制台更顺手、免费额度更多来选。3.5 又拍云CDN开发者友好的免费联盟计划又拍云联盟计划在国内开发者圈子里很出名个人开发者加入后在网站底部显著位置放置又拍云标识就可获得每月免费 CDN 流量该计划主要面向非商业个人站点。又拍云在国内节点和 HTTPS 支持上都做得不错对个人博客和小型站点来说这是一个能长期白嫖的稳定方案。需要注意联盟计划有审核和使用规范站点必须符合要求才能持续获得免费额度接入前先把规则读一遍。3.6 七牛云CDN融合CDN对象存储组合七牛云本身就是做对象存储起家的他们的 CDN 属于融合 CDN整合了多家上游节点资源国内覆盖有保障。注册后可以获得每月免费的对象存储空间和 CDN 下载流量适合把图片、视频、安装包这类大体积静态资源放到七牛上加速能给源站省下大量带宽。如果你的网站已经有专门的资源和源站分离架构或者正在头疼图片和附件把服务器带宽吃光七牛的免费额度非常合适。3.7 网宿CDN老牌厂商的体验套餐网宿是老牌 CDN 厂商在政企和大流量客户中口碑一直不错。针对新用户可以申请免费试用体验包但这类大厂通常需要联系商务开通流程没有前几家自助式那么轻量。试用套餐主要用于验证效果免费额度到期后是否继续使用全看项目预算。如果你就是想体验一下企业级 CDN 的调度能力和节点质量可以联系网宿商务申请试用但别指望能长期免费。3.8 加速乐CDN基础防护加速加速乐是知道创宇旗下的 CDN 产品免费版比较侧重安全防护包括基础的 DDoS 防护、CC 防护同时提供缓存加速能力。对于经常被人刷流量、打攻击的小网站来说加速乐的免费版能同时解决加速和安全两个问题。免费版的节点数量相对有限对访问速度不能要求太高当作一层防护网加上基本加速是够用的。3.9 Gcore CDN海外低延迟的新选择Gcore 是近年比较活跃的海外 CDN 服务商提供免费套餐包含一定量的流量或请求数额度全球节点覆盖较广特别是在欧美区域表现不错。如果你的站点面向海外用户把 Gcore 和 Cloudflare 放在一起对比测试是完全可行的。免费套餐的具体额度可能随官方政策调整使用前以官网最新说明为准。免费额度用完之后会自动切换为按量计费这一点要看清楚别不小心产生账单。3.10 jsDelivr开源项目静态资源的专业加速jsDelivr 严格来说不是全站 CDN它是专门为 GitHub、npm、WordPress 等平台上的开源项目提供静态资源免费加速的服务。不限流量支持版本回退前端开发者在项目中引入公共依赖库时非常常用。很多个人博客也会把图片传到 GitHub 仓库再通过 jsDelivr 来加速访问。这个方案只适合加速静态资源不适合整个网站接入而且使用时要遵守它的合理使用政策不能把它当成私人图床无限量刷流量。服务商免费额度特征是否需要备案最适场景Cloudflare免费版不限流量不需要海外访客为主、外贸站、博客腾讯云 CDN新用户体验包流量HTTPS请求需要国内官网、电商站阿里云 CDN新用户体验包流量HTTPS请求需要国内企业站、中大型门户百度智能云 CDN新用户免费流量包需要国内站点、搜索引擎流量导向又拍云 CDN联盟计划每月免费流量需要个人博客、非商业站点七牛云 CDN每月免费存储空间下载流量需要静态资源分离、大文件分发网宿 CDN商务申请试用套餐视情况企业级体验、大流量验证加速乐 CDN免费版基础防护加速需要小站点防护加速Gcore CDN免费额度流量/请求数限制不需要海外业务、面向欧美用户jsDelivr开源静态资源不限流量不需要开源库、GitHub上的静态文件4. 不同场景下的CDN选型实操建议4.1 个人博客和小流量站点怎么选个人博客的特点是访问量不大但想要覆盖不同地区的读者同时不想在这个项目上花一分钱。我的建议是先看访客结构如果你的博客技术含量高海外读者多直接上 Cloudflare 免费版即可它能帮你扛住突发流量SSL 证书这些也省了。如果访客主要在国内又不想备案那就有点麻烦因为国内大厂的 CDN 都要求备案。这种情况下可以先把域名备案做起来然后考虑又拍云联盟计划或者七牛云的对象存储加 CDN把图片和静态资源分流出去源站压力瞬间小很多。流量不大不等于没有风险小站点也经常会被扫描攻击建议随手开启 CDN 自带的防护能力比如 Cloudflare 的防护模式或加速乐的 CC 防护。另外小站点更新频繁需要注意免费 CDN 的刷新配额每天最多刷新多少次心里要有数。如果更新比较频繁宁可把 CSS 和 JS 的缓存时间设短一些也别依赖刷新功能去做即时更新。4.2 面向国内用户的电商和企业官网怎么选电商和企业官网对稳定性和访问速度的要求明显高于个人博客。这类站点的访客绝大多数在国内优先选国内云厂商的 CDN阿里云、腾讯云、百度智能云都行核心看免费额度用完后的续费价格和控制台体验。备案是前提条件必须在接入 CDN 前完成。电商站有一个特别容易踩的坑把购物车、登录、订单查询这类动态接口也配置了缓存导致用户看到别人的登录态或者旧库存数据。合理的做法是只对图片、商品图、CSS、JS 这类静态资源做缓存动态接口一律绕过 CDN 或设置极短 TTL。电商场景还要关注源站的带宽和并发能力。CDN 能挡住大部分静态请求但如果遇到秒杀、大促这类突发流量回源压力仍然会很大。建议提前在 CDN 控制台上把源站限流、回源超时等参数配置好并开启访问日志方便事后排查问题。企业官网如果以品牌展示为主对动态性要求不高可以适当放宽缓存策略将整页 HTML 也缓存几分钟能显著降低源站负载。4.3 出海业务和海外访客占主力的站点怎么选如果你的业务本来就是做海外市场的用户分布在美国、欧洲、东南亚等地那答案比较明确优先选 Cloudflare 免费版它是目前覆盖范围最广、免费额度最慷慨的服务之一。如果某些区域想要更好的性能和稳定性可以叠加 Gcore 的免费套餐做分流或者对核心静态资源启用多个 CDN 做容灾。这里有个要点是回源线路海外 CDN 要回源到你的服务器两者之间的国际链路质量决定了整体速度建议把源站放在离主要用户区域较近的机房或者直接用对象存储托管静态资源减少回源链路损耗。面向海外访客的站点还要注意 DNS 的解析速度和 TTL 设置。很多出海站在国内注册域名用国内 DNS 服务商海外用户解析时可能延迟偏高。建议将 DNS 托管到 Cloudflare 这类全球解析能力较强的平台并适当缩短 TTL方便后续切换 IP 时快速生效。对于外贸站来说接入 CDN 之后一定要检查目标国家的访问速度别只盯着国内体验。4.4 静态资源和开源项目场景怎么选如果你运行的是一个开源项目文档站或者想把博客中的图片独立出去加速jsDelivr 加 GitHub 的组合几乎零成本。把图片文件提交到 GitHub 仓库通过 jsDelivr 的 CDN 链接访问可以利用全球节点加速也不用自己买服务器带宽。但要注意 jsDelivr 有合理使用限制它是给开源项目用的不是私人图床流量过大会被限制最好只用来放博客配图这类轻量资源。对于视频、安装包这类大文件jsDelivr 不合适建议用七牛云的对象存储加融合 CDN或者国内大厂的 CDN 产品。大文件场景最怕的是流量突发导致费用爆掉建议给 CDN 设置流量封顶开通超额提醒并且给回源配置限速。静态资源分离这种架构做得好源站带宽利用率能降到原来的 10%服务器 CPU 和内存压力也会小很多值得每个站长认真对待。5. 免费CDN接入实测记录和配置要点5.1 以Cloudflare为例从注册到加速生效的完整流程我用 Cloudflare 免费版给一个测试博客做接入整个流程大概二十分钟。第一步是注册账号并添加站点填入你的主域名选择 Free 套餐之后 Cloudflare 会自动扫描并导入当前的 DNS 记录。第二步是去域名注册商处修改 Nameserver把原来的 DNS 服务器改成 Cloudflare 分配的两个 NS 地址。这一步是很多人卡住的地方NS 修改生效需要几十分钟到几小时不等这个期间域名解析会有短暂的不稳定建议选择工作日低峰期操作。NS 生效之后Cloudflare 会显示 Active 状态此时流量已经经过 CDN 节点了。接下来进入 SSL/TLS 设置页我选择的是 Full (Strict) 模式因为源站已经配置了受信任的证书。然后设置缓存规则我把 /wp-content/ 这类静态资源目录缓存时间设为 7 天HTML 页面不缓存登录后台路径 wp-admin 明确绕过 CDN。这里特别注意Cloudflare 免费版只有 3 条页面规则一定要把最重要的规则合并好比如后台路径只占一条静态资源缓存一条HTML 短缓存一条刚好够用。最后是验证效果。我用了在线拨测工具从国内多个城市测试接入前后的首屏时间静态资源请求耗时下降了将近一半。DNS 切换期间的分钟级波动确实存在但等 NS 完全生效后稳定性恢复。整个接入过程没有动源站代码只改了一次 DNS这是 Cloudflare 最吸引人的地方。5.2 国内CDN阿里云/腾讯云接入流程差异国内 CDN 的接入流程和 Cloudflare 有较大差异。第一步同样是在控制台添加加速域名填写源站信息这里源站可以填 IP 也可以填源站域名。第二步是设置回源 HOST这应该是新手最容易出错的配置。回源 HOST 指的是 CDN 节点回源时请求的目标域名如果你的源站服务绑定了多个域名回源 HOST 填错会导致 404 或者访问到错误的站点。第三步是添加 CNAME 记录国内 CDN 不会要求改 NS而是提供一个 CNAME 地址让你去 DNS 服务商处添加一条记录。这里有一个关键区别CNAME 记录不能和主域名的 A 记录共存如果你想把主域名 example.com 本身接入 CDN通常需要在 DNS 服务商处把 A 记录改成 CNAME或者使用支持 CNAME Flattening 的 DNS 服务商。如果只想让 www.example.com 和静态资源域名 cdn.example.com 走 CDN那就简单多了直接添加对应 CNAME 记录即可。之后需要到 CDN 控制台配置 HTTPS 证书国内厂商通常支持免费证书自动签发也支持上传自定义证书。配置完成后可以通过 CDN 控制台提供的验证 CNAME 生效功能来确认状态。如果显示未生效多半是 DNS 缓存还没刷新或者记录值填错了。国内 CDN 的加速域名如果使用大陆节点必须已经完成 ICP 备案这点在添加域名时系统会直接校验没备案的话会报错需要先把备案流程走完。整个国内 CDN 接入比 Cloudflare 多几层配置但控制台每一步都有提示仔细点基本不会出大错。5.3 缓存配置里的常见翻车点TTL、忽略参数、刷新缓存配置是接入 CDN 之后最值得花时间研究的环节。第一个翻车点是 TTL 设得太长。有人觉得缓存时间越长越好把 HTML 页面也设成 24 小时结果每次发布文章后用户要等一天才能看到新内容。正确的思路是按资源类型区分图片、视频、字体这类不易变化的资源可以缓存 7 到 30 天CSS、JS 文件建议缓存 1 到 7 天并在发布时通过文件名加版本号或 query 参数来主动更新HTML 页面要么不缓存要么只缓存 60 到 600 秒保证内容新鲜度。第二个翻车点是忽略查询字符串这个参数。很多 CDN 控制台里有这个开关如果你开启了忽略查询参数那么 app.js?v1.0 和 app.js?v2.0 会被视为同一个资源用户可能拿到旧版本。我建议对静态资源关闭忽略查询参数或者干脆给静态文件改名发布从根源上避免缓存混乱。第三个翻车点是缓存刷新操作不及时发布新版本后发现线上还是旧的多数是没刷新 CDN 缓存。刷新操作有配额限制免费额度用完了就只能等 TTL 自然过期所以重要更新尽量集中提交刷新任务。5.4 源站日志和监控别等用户投诉才发现问题接入 CDN 并不代表一劳永逸源站还需要保留足够的日志和监控能力。CDN 会把用户请求转发到源站源站日志里能看到真实的回源请求通过对比 CDN 控制台的访问日志可以判断缓存命中率是否正常。如果命中率很低说明缓存规则没配好大量请求都在回源加速效果自然不明显。一般静态资源站的缓存命中率应该能到 90% 以上如果远低于这个数值优先检查缓存规则和 TTL 设置。监控方面建议给源站配上基础的告警规则比如 CPU、带宽、回源 5xx 错误率的告警。CDN 挡掉了大部分流量源站的负载曲线会比较平稳一旦出现异常峰值很可能是缓存大规模失效或者被恶意刷量。另外很多 CDN 控制台提供免费的基础用量告警云厂商的短信或邮件通知完全够用。把日志和监控提前配好后续排查任何问题都能省一半时间。6. 常见问题与排查技巧实录6.1 接入后网站打不开5xx错误排查思路接入 CDN 后最常见的翻车现场是首页直接 502、521 或 523。这类错误的本质通常是 CDN 节点无法成功从源站获取内容。排查顺序建议从外到内先确认源站本身是否正常直接用本地 curl 请求源站 IP如果源站本身返回 5xx 或超时问题就不在 CDN然后检查回源配置看源站地址、回源 HOST、回源端口是否填写正确接着检查源站防火墙或安全组是否放行了 CDN 回源 IP 段。有些人在源站开启了白名单机制只允许某些 IP 访问但没把 CDN 回源 IP 加入白名单结果用户访问全部失败。这种情况在云服务器安全组和宝塔等面板里很常见。还有一类是源站 SSL 证书配置不完整CDN 使用 Full (Strict) 模式回源时如果源站证书是自签名的或已经过期连接会被拒绝报 525 或 526 错误这时要么换用 Full 模式要么把正确的证书部署到源站。6.2 HTTPS重定向循环证书模式与源站跳转冲突这是一个非常经典的案例。某个站点接入 Cloudflare 后访问首页发现提示重定向次数过多。排查后发现了问题链条用户在浏览器访问 https://example.com请求先到了 Cloudflare由于 SSL/TLS 模式设置成了 FlexibleCloudflare 向源站发起的是 HTTP 请求。而源站的 Nginx 配置了强制 HTTP 跳转 HTTPS于是源站返回 301 跳转把请求指回 https://example.com浏览器再次发起请求又一次走到 Cloudflare又一次回源又一次 301循环往复页面永远加载不出来。解决思路是让 CDN 回源时直接使用 HTTPS也就是把 SSL/TLS 模式改为 Full 或 Full (Strict)这样源站收到的是 HTTPS 请求不会再触发跳转逻辑。如果源站确实不支持 HTTPS那就反过来把源站的强制跳转临时关掉让 CDN 层统一处理跳转。这类问题在接入 CDN 后特别常见核心是要理解用户到 CDN和CDN 到源站是两条独立的链路证书和跳转策略都要分别梳理。6.3 缓存污染后台登录态被缓存和重要页面更新不及时缓存污染是最容易让开发者崩溃的问题。表现很典型后台登录之后页面显示的却是另一个用户的信息或者发布了一篇文章但所有访客都看不到更新。前者的原因通常是动态 URL 也被 CDN 缓存了而 CDN 的缓存 key 只包含 URL不包含 Cookie 或登录态于是不同用户访问同一个 URL 时命中了同一个缓存副本。解决办法是在 CDN 缓存规则里明确排除后台路径、登录接口、购物车、个人中心这类动态 URL或者把这些请求设置为不缓存。后者的原因则是 HTML 页面 TTL 太长且没有主动刷新。我的习惯是 HTML 页面默认不缓存或者只缓存 60 秒静态资源缓存时间拉长。如果确实需要缓存 HTML发布之后马上到 CDN 控制台提交一次刷新任务。另外很多开发者为了方便所有页面都用同一个缓存规则这是缓存污染的高危操作一定要按路径和文件类型细分规则。6.4 CDN源站被打垮免费CDN不是保险箱虽然 CDN 有防护能力但便宜和无限制的防护并不存在。免费版 CDN 能抵御一些小规模的扫描和压力攻击但面对有组织的重流量攻击免费版很难完全扛住而且某些 CDN 服务商明确规定免费套餐如果遭遇异常攻击流量可能会直接限制服务或要求升级。所以对于重要的网站不要把免费 CDN 当成万无一失的安全保险。在攻击发生之前建议做几件事源站服务器只对 CDN 回源 IP 开放 80 和 443 端口从网络层减少暴露面源站部署基础的限流和防暴力破解策略CDN 控制台开启安全防护拦截可疑 IP为源站设置带宽和并发告警。真正到了紧急时刻可以临时考虑付费防护或换用防护能力更强的服务商但这些都是亡羊补牢日常就把源站藏好才是最有效的。6.5 常见问题速查表现象可能原因解决建议接入后 502/521 错误回源源站不可达、防火墙拦截回源 IP、回源 HOST 配置错误先绕开 CDN 直连源站测试再逐项检查回源配置和安全组HTTPS 无限重定向SSL/TLS 模式 Flexible 与源站强制跳转冲突改用 Full 或 Full (Strict)或在源站临时关闭跳转登录状态串用户动态 URL 被缓存缓存 key 未区分离线状态后台、登录、购物车等路径设置不缓存新版本发布后还是旧页面TTL 过长或未刷新缓存发布后主动刷新或给静态资源加版本号缓存命中率极低缓存规则太粗TTL 太短大量请求回源细分静态资源目录拉长静态资源 TTL免费额度突然用尽访问量增长或遭到刷量设置用量告警配置流量封顶优化缓存降低回源量最后分享几点使用免费CDN的个人体会免费 CDN 对中小网站和开发者来说确实是性价比极高的基础设施但免费用不代表不用管。我自己在接入使用时最深的体会是两点一是接入初期花半小时把缓存规则、SSL 模式、回源 HOST 这些细项都确认好后面至少能省下十个小时的排障时间二是永远给自己的源站留一条后路保持直接通过源站 IP 访问的能力这样即使 CDN 出了任何问题也能立刻确定问题出在 CDN 还是源站。如果你正在几个免费 CDN 之间犹豫不决我的建议是别光看评测直接挑两个候选服务商把同一个测试站分别接入用拨测工具实测三天看首屏耗时、缓存命中率和稳定性数据哪个好就留哪个。CDN 这东西别人说再好都不如自己测出来的数据靠谱。希望这份推荐清单和踩坑记录能帮你少走弯路把网站速度这件事一次做对。