本文为想快速上手的读者提供一步步的实操思路:从选择厂商、创建资源、DNS 指向、缓存策略设置,到用浏览器开发者工具、curl 与 CDN 响应头核验 缓存命中 与 回源,并解释常见导致回源的原因与排查方法,让你能在最短时间内确认 CDN 是否按预期工作。
选择厂商时优先考虑易用性和文档:诸如 Cloudflare、腾讯云 CDN、阿里云 CDN、Fastly 等都提供控制台向导与默认加速模板。对小白推荐先选带有一键接入或 CNAME 指引的产品,并关注是否支持自动 HTTPS、缓存规则可视化与“开发者模式”(绕过缓存)功能,这样便于后续验证 缓存命中 与 回源。
基本流程:1) 在控制台创建加速域名并填写源站地址(IP 或域名);2) 设置缓存规则与 TTL(静态资源可设长缓存,动态页面短缓存或不缓存);3) 根据提供商指引把你的域名 CNAME 指向厂商提供的加速域名;4) 开启 HTTPS(证书自动或自备);5) 等待 DNS 生效。配置完成后即可开始验证。
用 dig 或 nslookup 检查 CNAME 指向,例如:dig +short www.example.com CNAME。确保返回值是 CDN 厂商提供的域名,且 DNS TTL 合理。也可用在线 DNS 检查工具确认在全球各地是否已生效。只有 CNAME 生效后,用户流量才会走 CDN 节点。
浏览器开发者工具 Network 面板可查看响应头,关注如 Age、Via、CF-Cache-Status、X-Cache 等字段。使用 curl:curl -I https://www.example.com/path 或 curl -v,查看响应头示例:Age: 表示缓存存在时间,CF-Cache-Status: HIT/MISS/EXPIRED。若返回 HIT,则说明发生了 缓存命中;若显示 MISS 或 BYPASS 则为回源或未缓存。
回源常见原因包括:源站设置了 Cache-Control: no-store/no-cache 或 Set-Cookie;URL 带有未忽略的动态查询字符串;CDN 配置了不缓存的路径规则;缓存已过期(TTL)、缓存被清理或 CDN 节点尚未同步;请求头强制绕过缓存(如 Pragma: no-cache)。排查时先看响应头与缓存规则,再看源站是否返回阻止缓存的头。
TTL 由 Cache-Control/max-age 或 CDN 的默认缓存时间决定。静态资源(图片、JS、CSS)可设置为几小时到几个月;模板页或频繁更新的接口推荐短 TTL 或不缓存并结合 CDN 的分级缓存策略。测试时可临时调低 TTL 或使用 CDN 的缓存预热/刷新功能,验证不同 TTL 下的命中率变化。
方法:1) 在源站启用简短日志或打印访问时间,观察是否有 CDN 节点请求到达;2) 使用 curl 带上特殊请求头(如 Cache-Control: no-cache)对比返回结果;3) 本地换用 hosts 或 curl --resolve 直接指向 CDN IP,确认请求路径;4) 在 CDN 控制台查看回源流量和命中率统计并结合节点响应头交叉验证。

排查步骤:核对源站响应头是否允许缓存;检查是否有 Set-Cookie 导致默认不缓存;统一静态资源路径并添加版本号以便长缓存;利用 CDN 的忽略参数/白名单规则处理 Query String;开启压缩与 HTTP/2 提升传输效率。最终以实际的 HIT/MISS 数据和源站访问日志为准。
可使用在线平台如 webpagetest.org、pingdom、或 CDN 厂商提供的全球测试节点;也可借助云服务器(不同地域)运行 curl 脚本批量请求并收集响应头。对比各节点的 X-Cache、Age、CF-Cache-Status 等字段,可以判断哪些地区命中率低并据此调整配置或请求厂商优化。