如何判断CDN是否已生效

更新时间:
复制 MD 格式

问题背景

已经配置了CDN,但不清楚配置是否生效。

分析步骤

判断CDN配置的域名是否起到加速的效果,需要按照如下几个步骤进行分析:

前置条件检查

在排查 CDN 是否生效之前,请先确认以下前提条件:

  • 源站服务正常:如果域名解析正常但访问返回 404 等错误,需优先确认源站服务是否可用,而非仅排查 CDN 配置。可以绕过 CDN,直接通过源站 IP 或源站域名访问资源来验证源站可用性。

  • DNS 解析记录类型正确:CDN 加速域名必须配置 CNAME 类型的解析记录。如果通过 IP 可以正常访问但通过域名无法访问且 Ping 不通,请检查 DNS 中是否错误配置了 A 记录而非 CNAME 记录,或 CNAME 指向的地址是否正确。可以通过 nslookup -type=CNAME <加速域名>dig +short <加速域名> CNAME 命令验证当前的解析记录类型。

  • CDN 缓存规则配置正确:确保CDN 控制台中加速域名的缓存规则(如缓存过期时间、目录或文件后缀的缓存策略)已正确配置,避免因缓存规则不当导致资源无法被 CDN 节点缓存。

确认CNAME是否配置成功

  • 控制台中CNAME状态为已配置,且域名状态为正常运行。

  • 使用nslookup -type=CNAME 加速域名 dig +short <加速域名> CNAME命令,如果返回的解析结果和CDN控制台上该加速域名的CNAME值一致,则表示配置的CNAME已经生效。

如果未解析到 CDN CNAME,说明 CNAME 配置未生效,请参考配置CNAME常见问题排查。

验证CDN缓存是否生效

  • 浏览器访问(并打开浏览器开发者工具)。

    当响应头结果中有AgeX-CacheX-Swift-SaveTimeX-Swift-CacheTime时,证明阿里云CDN已经生效。

    说明
    • X-Cache:字段为MISS,则表示未命中缓存,需要进行回源处理;X-Cache字段为HIT,则表示命中了CDN缓存,会直接读取缓存数据。

    • Age: 表示文件在CDN节点上缓存的时间(秒)。文件被刷新或首次访问无此字段。Age0表示缓存过期,需回源校验。

    • X-Swift-SaveTime:表示资源首次被缓存到CDN节点上的时间(GMT)。转换为中国北京时间需加上8小时。

    • X-Swift-CacheTime:字段值表示CDN节点上的允许缓存时间,即该文件可以在CDN节点上缓存多久。如果是0,则表示该请求无法缓存。

    • EagleId:阿里云 CDN 节点的特征响应头字段。在浏览器开发者工具的网络请求响应头(Response Headers)中查找 eagleid 字段,若该字段存在,表示请求已经过阿里云 CDN 节点处理;若缺失,可能表示请求未经过 CDN(例如直接回源或被本地缓存拦截)。

  • 如需验证整体的加速效果,应当通过拨测的方式进行对比验证。可通过网络拨测工具分别绑定CDN和绑定源站对比测试。

如果按照上述方法验证时遇到异常结果,请检查以下常见排查点:

  • 浏览器未显示 CDN 响应头:如果在浏览器开发者工具中未看到 AgeX-CacheX-Swift-SaveTimeX-Swift-CacheTime 等 CDN 响应头,可能是浏览器使用了本地缓存而未实际发起请求。建议先按 Ctrl+Shift+R(Windows/Linux)或 Cmd+Shift+R(macOS)强制刷新页面,或使用浏览器无痕模式/更换其他浏览器重新访问测试。

  • Ping 不通或访问异常:本地 DNS 缓存可能保留了旧的解析结果,导致请求未到达 CDN 节点。建议执行以下命令刷新本地 DNS 缓存后重试:

    • Windows:ipconfig /flushdns

    • macOS:sudo dscacheutil -flushcache

    • Linux:sudo systemd-resolve --flush-caches

    如果刷新 DNS 缓存后仍然无法正常解析或访问,可尝试将本地 DNS 服务器更换为公共 DNS(如 8.8.8.8114.114.114.114)后重新测试,以排除本地 DNS 服务器解析异常的影响。此操作同样适用于以下常见场景:

    • 浏览器报 DNS_PROBE_FINISHED_NXDOMAIN 错误:通常表示 DNS 无法解析该域名,刷新 DNS 缓存或更换公共 DNS 后重试。

    • CDN 续费或配置变更后 Ping 不通:DNS 解析缓存可能仍指向旧地址,等待 DNS 缓存过期或手动刷新后即可恢复。

  • 确认访问 URL 使用了正确的域名:请确保访问资源时使用的是 CDN 加速域名(如 cdn.example.com),而非 CDN 分配的 CNAME 地址(如 cdn.example.com.w.kunlunaq.com)。CNAME 地址仅用于在 DNS 服务商处配置解析记录,不应直接用于浏览器访问或资源引用。

常见问题

CDN 控制台显示 CNAME 已配置,但域名仍无法访问或解析失败怎么办?

如果 CDN 控制台的CNAME状态显示为已配置,但域名访问异常,请按以下步骤排查:

  1. 确认源站服务正常:绕过 CDN 直接通过源站 IP 或源站域名访问资源,排除源站服务不可用的可能。如果源站本身无法访问,需先恢复源站服务。

  2. 检查域名状态:在 CDN 控制台确认加速域名的状态为正常运行。如果域名因欠费、违规等原因被停用,CDN 加速不会生效。CDN 续费后通常不需要重新配置即可恢复访问。

  3. 清除本地 DNS 缓存:本地 DNS 缓存可能保留了旧的解析结果。执行以下命令清除后重试:

    • Windows:ipconfig /flushdns

    • macOS:sudo dscacheutil -flushcache

    • Linux:sudo systemd-resolve --flush-caches

  4. 等待 DNS 生效:如果是新添加或修改的 CNAME 记录,DNS 全网生效可能需要 5~10 分钟,请稍后再次验证。

域名已在 DNS 侧配置了阿里云 CDN 的 CNAME,但为何仍无法访问?

DNS 解析指向了阿里云 CDN 的 CNAME 地址,不代表 CDN 加速已经配置完成。CDN 服务需要同时满足以下两个条件才能正常工作:

  1. 在 CDN 控制台添加加速域名:登录CDN 控制台,在域名管理页面添加加速域名并完成回源等配置。

  2. 在 DNS 服务商处配置 CNAME 记录:将域名的 DNS 解析指向 CDN 控制台分配的 CNAME 地址。

如果仅完成了第 2 步(DNS 解析配置),而未在 CDN 控制台添加加速域名,CDN 节点无法识别该域名的请求,服务不会生效。请确认域名已在 CDN 控制台成功添加,且域名状态正常运行

配置 CDN 后网站图片加载缓慢或资源未加速怎么办?

CDN 仅加速通过加速域名请求的资源,不会自动替换网站代码中的资源引用地址。如果接入 CDN 后仍感觉加载缓慢,请按以下步骤排查:

  1. 检查资源 URL:打开浏览器开发者工具(F12),在 Network 面板查看图片、CSS、JavaScript 等静态资源的请求 URL。如果这些 URL 仍指向源站地址(如 OSS Endpoint 或源站 IP),说明这些资源请求未经过 CDN。

  2. 修改资源引用:确保网站前端代码中静态资源的 URL 已替换为 CDN 加速域名。例如,将 https://oss-bucket.oss-cn-hangzhou.aliyuncs.com/image.png 修改为 https://cdn.example.com/image.png

  3. 验证 CDN 生效:通过 CDN 加速域名访问某个资源,在浏览器开发者工具中查看响应头。如果 X-Cache 字段值为 HIT,表示该资源已被 CDN 缓存和加速。

DNS 解析冲突导致 CDN 不生效怎么办?

如果 CNAME 已正确配置但 CDN 仍未生效,可能是 DNS 配置存在冲突。请根据以下场景排查:

  • 同一主机记录存在多条 CNAME 解析:同一域名的主机记录下如果存在多条 CNAME 解析记录,会导致 DNS 解析冲突,请求可能绕过 CDN 直接到达源站。请登录 DNS 服务商控制台,禁用或删除未指向阿里云 CDN 的 CNAME 解析记录,确保该主机记录下仅保留一条指向阿里云 CDN CNAME 地址的解析记录。

  • 泛域名加速与子域名记录冲突:配置泛域名加速(如 *.example.com)后,如果 DNS 中单独为某个子域名(如 img.example.com)配置了 A 记录或其他解析记录,该子域名的请求可能不经过 CDN。请删除 DNS 中该子域名的独立解析记录,等待 DNS 生效(通常约 10 分钟)后重新测试。

  • 第三方 DNS 服务冲突:如果使用 Cloudflare 等第三方 DNS 服务且出现 Error 1001 错误,或域名的 NS 记录未指向阿里云云解析 DNS,请求可能被第三方 DNS 拦截或未到达阿里云 CDN。请检查域名的 NS 记录和权威 DNS 服务器配置,确保 CNAME 接入方式正确,必要时将 DNS 服务切换至阿里云云解析 DNS,并清除本地 DNS 缓存后重试。

  • HTTPS 访问失败但 HTTP 正常:如果通过 HTTP 协议可以正常访问但 HTTPS 访问失败或提示证书错误,通常是 CDN 未配置 SSL 证书。请登录CDN 控制台,在加速域名的 HTTPS 配置页面上传或选择 SSL 证书,开启 HTTPS 安全加速。

CDN 控制台状态显示异常或监控无流量怎么办?

如果 CDN 控制台中域名的 CNAME 状态频繁切换、或监控面板显示无流量数据,请按以下思路排查:

  • CNAME 状态频繁在"已配置"和"未配置"之间切换:可能是 DNS 配置存在冲突(请参考上方"DNS 解析冲突导致 CDN 不生效怎么办?"),或 DNS TTL(生存时间)尚未完全过期。修改 NS 记录后全网生效通常需要最长 48 小时。此外,如果在响应头中看到大量 304 状态码,这属于正常的 HTTP 缓存行为(表示资源未被修改,服务器返回"未修改"响应),并非 CDN 异常。如需强制获取最新资源,可使用 Ctrl+F5(Windows/Linux)或 Cmd+Shift+R(macOS)进行强制刷新。

  • 监控面板无流量数据:除 DNS 解析冲突外,请检查以下事项:

    • 建议使用二级域名(如 cdn.example.com)而非主域名配置 CDN 加速,避免与其他解析记录冲突。

    • 通过浏览器无痕模式访问测试 URL,排除本地浏览器缓存的干扰。

    • 确认测试 URL 使用的是 CDN 加速域名,而非源站地址或 CNAME 地址。

  • 怀疑域名本身存在问题:如果域名可能已过期或被注册商停用,可通过阿里云 WHOIS 查询查询域名的注册信息和到期时间,确认域名状态正常。