更新时间:2024-06-06 GMT+08:00
接入CDN后,访问速度仍然很慢
问题现象
接入CDN加速后,用户访问网站或者APP资源依然很慢。
排查思路
- 域名是否接入CDN加速
- 是否命中CDN缓存
- 是否跨运营商和跨省
- 缓存规则设置是否合理
- 加速资源是否预热
- 是否客户端网络问题
排查步骤
- 检查域名是否接入CDN加速
您需要检查域名是否解析到CDN,以Windows操作系统为例,打开cmd程序,输入如下指令:
nslookup -qt=cname 加速域名
如果返回结果显示CNAME,则表示CNAME配置已经生效,如下图:
- 如果查询出的域名解析中没有上图红框中所示,后缀为.c.cdnhwc1.com的CNAME解析记录,则说明您添加的域名的CDN加速未生效。此种情况下CDN加速未生效的可能原因是您没有在域名DNS服务商处配置CNAME记录,请根据配置CNAME内容指导前往您的域名DNS服务商处配置CNAME记录。
- 如果您确认已正确配置CNAME记录,请检查同一解析线路下该域名的上一记录类型的TTL时间,TTL时间决定了解析记录在本地DNS服务器的缓存时间。您新添加的CNAME记录在上一记录类型的本地TTL缓存时间过期后才会正式生效。
- 查看是否命中CDN缓存
在浏览器Chrome上,按F12,选择“Network”。查看指定URL的响应头,查看头部信息,进行如下判断:
- 如果有“x-hcs-proxy-type”头部,值为“1”即命中缓存,值为“0”即未命中缓存,不再查看其它头部;
- 如果无“x-hcs-proxy-type”头部,而有“X-Cache-Lookup”头部,值为“Hit From MemCache”、“Hit From Disktank”或“Hit From Upstream”即为命中缓存,其它值表示未命中缓存,不再查看其它头部;
- 如果同时无“x-hcs-proxy-type”、“X-Cache-Lookup”头部,有“age”头部,则值大于“0”即命中缓存,值为“0”即未命中缓存。
如果未命中缓存,请跳到4. 检查缓存规则设置查看缓存规则设置。
如果命中缓存,请进入下一步分析。
- 是否跨运营商和跨省
如果用户访问跨省和跨运营商,可能会影响访问速度,请按照以下步骤排查:
- 检查缓存规则设置
- 检查所访问的资源对应的缓存规则,是否存在配置的缓存过期时间为0或者缓存过期时间过短的情况。CDN不缓存或者缓存过期时间过短会导致请求回源,无法达到加速效果。
- 检查您的源站缓存设置,如果源站设置了no-cache、private、no-store,CDN侧同时开启了“缓存遵循源站”功能(此功能默认关闭),CDN将无法缓存源站资源,导致所有请求回源,无法达到加速效果。
- 检查您设置缓存规则的优先级,数值越大优先级越大,系统会优先匹配。
- 如果您的URL携带了参数,并且参数不断变化,当使用不同的URL去访问的时候,CDN会认为这是一个新请求(即使这两个不同的URL访问的是同一个文件,并且该文件已经缓存在节点上),依然会回源请求该资源。如果携带不同的参数的URL访问的是同一个资源,建议开启忽略URL参数功能,请参见URL参数。
- 更多缓存设置请参考如何设置缓存过期时间。
- 检查资源是否预热
如果您是首次访问某资源,且之前未对该资源做过预热处理,CDN节点会回源请求资源,首次访问速度慢属于正常。
首次接入CDN后,建议您预热大文件或者视频,图片、小文件等不建议预热。
- 检查客户端网络
ping CDN加速后访问依然较慢的域名,检查网络时延和丢包。如果网络时延大或者丢包严重,需要检查客户端网络接入问题。
如果排除以上几点后问题仍然存在,请提交工单处理。