背景说明
使用CDN加速后,用户请求均访问到CDN节点,由CDN节点响应文件给用户。在文件可缓存情况下,CDN节点的访问流量通常远大于回源流量。如果通过CDN加速控制台查看发现回源流量大于访问流量,可参考本文档进行排查。
可能原因
CDN加速开启压缩,而源站未开启压缩
源站未开启压缩功能时,CDN节点回源请求获取到的是非压缩文件,而CDN节点上如果开启了压缩,针对用户请求头包括Accept-Encoding: gzip, deflate时,CDN节点会响应压缩后的文件。由于压缩后文件约为未压缩文件的10-30%,如果域名整体请求量较小,此时可能会造成CDN加速服务的回源流量大于访问流量。
解决方案:此场景下建议源站开启Gzip压缩。
注意CDN节点回源时,默认会携带Via请求头,对于请求头带有Via的请求,源站即便开启Gzip压缩,仍有可能无法返回正确的压缩响应,此时也会造成回源流量大于访问流量。该情况下建议调整Gzip压缩配置以使其生效,以nginx为例,可通过设置:gzip_proxied any使得Gzip压缩成功。
未开启分片回源功能,用户请求Range
未开启分片回源时,若用户发起Range请求,CDN默认完整文件回源并缓存文件(Range 请求头部 Start值的偏移量在5MB内),此时源站响应的文件大于客户端请求的Range范围,如果用户最终并未请求完整文件,且域名总体请求量较小,此时也会造成回源流量大于访问流量。
解决方案:建议源站改造支持Range请求。