通过CDN请求大文件自动断开
网站编辑2022-01-05 14:23:58457
排查思路执行以下命令,分析返回结果。
curl -voa http://[$Address]
说明:[$Address]:指CDN的地址。
系统显示类似如下,发现存在“transfer closed with 158206570 bytes remaining to read”报错信息。

从报错信息可知,这个文件大于100MB。从Response Headers分析可以得到以下几个信息:
X-Cache: MISS TCP_MISS dirn:-2:-2表示这是一个MISS的请求,是回源的。
X-Swift-CacheTime: 0表示这个请求是无法缓存到CDN上的,每次都需要回源。
Cache-Control: public, max-age=0表示这里源站响应了max-age=0,是导致CDN无法缓存的原因。
这个是产品层面的一个限制,对于超过100MB的文件,如果源站响应了Cache-Control为max-age=0、no-cache等不缓存的策略,将导致CDN无法缓存,这类请求会被CDN的Swift缓存组件断开。这主要是因为如果大文件请求不执行缓存,那么每次都需要回源,相当于CDN没有起到加速效果,而且对于CDN的回源带宽以及源站的性能都有影响。
解决方案
源站删除不缓存的Cache-Control头,支持CDN可以缓存此类文件。同时,对于大文件,如果源站支持Range,建议CDN层面开启Range回源功能。
操作步骤
1.登录全站加速控制台。
2.在左侧导航栏,单击域名管理。
3.在域名管理页面,单击目标域名对应的配置。
4.在指定域名的左侧导航栏,单击回源配置。
5.在回源配置页签下找到Range回源。
6.打开或关闭Range回源开关。








