发现很多CDN都有Range回源功能,比如百度智能云CDN也有这个功能。
看功能介绍开启此功能,有助于减少大文件分发时回源消耗并缩短响应时间,是一个不错的功能。
不过直接开启是没有效果的,此功能需源站支持Range请求。
主机吧对这方便技术小白,查了下,直接在nginx配置文件里加代码即可。
add_header Accept-Ranges bytes;
添加后,重启配置即可完成。
要怎么检查Range是否支持呢?
在linux下执行 curl -I http://app.zhujib.com/az.apk ,会返回响应结果
HTTP/1.1 200 OK
Date: Thu, 28 Apr 2022 08:31:44 GMT
Content-Type: application/octet-stream
Content-Length: 34849624
Connection: keep-alive
Server: openresty
Last-Modified: Thu, 07 Apr 2022 11:07:15 GMT
ETag: "624ec5e3-213c358"
X-CCDN-Origin-Time: 9
via: CHN-ZJshaoxing-AREACT1-CACHE38[116],CHN-ZJshaoxing-AREACT1-CACHE35[92,TCP_MISS,113],CHN-SH-GLOBAL1-CACHE163[82],CHN-SH-GLOBAL1-CACHE120[9,TCP_MISS,27]
x-hcs-proxy-type: 0
X-CCDN-CacheTTL: 2592000
Accept-Ranges: bytes
Response Header中包含俩个头字段:Accept-Ranges: bytes, Content-Length
Accept-Ranges: bytes,表示服务器对于这个文件接收Range范围的请求,远程服务器上使用的单位是字节。
Accept-Ranges: none ,表示不支持发送Rang 请求.
上图说明支持了,也可以直接访问网站源文件,F12,Network,查看HEADERS,显示有Accept-Ranges: bytes就表示支持了。
目前主机吧这边测试并没有任何有问题,服务器状态也良好,有问题的同学可以留言。
Range回源介绍:
CDN 为客户提供 Range 回源配置功能,Range 是 Http 请求头,用于文件指定部分的请求。如:Range: bytes=0-999 就是请求该文件的前 1000 个字节。开启Range回源功能,可以减少回源流量消耗,有效提高大文件分发效率,提升响应速度。
Range回源状态 | 举例 |
---|---|
开启 | 若用户 A 请求资源: http://zhujib.com/test.png ,节点收到请求后,在未命中节点缓存、缓存过期等情况下需要回源时,节点发起带 Range 的回源请求,分片获取资源,缓存并返回给用户。 |
关闭 | 若用户 A 请求资源: http://www. ,节点收到请求后,在未命中节点缓存、缓存过期等情况下需要回源时,节点发起不带 Range 的回源请求,缓存并返回给用户。此时,如果用户 A 的请求带有 Range,可能会有回源放大和响应慢的问题。回源放大:比如用户 A 请求 7-8M 的资源,节点回源会放大到整个资源。响应慢:比如用户 A 请求 7-8M 的资源,节点回源需要先获取 0-7M 的数据之后,才能给客户响应 body 内容。 |