本文档介绍火山引擎内容分发网络中(CDN)对用户请求中多重范围(multi-range) 的支持。
在 HTTP 请求中,您可以在 Range 头部中指定获取请求文件的多个分片。例如,Range
头部可以是 Range: bytes=0-50, 30-80
。
默认情况下,CDN 不支持 multi-range。当收到一个 multi-range 的请求时,CDN 会响应 416 状态码。要使 CDN 支持 multi-range,您可以在 CDN 中启用该特性。
说明
Multi-range 启用后,如果用户请求中的任何一个分片与请求文件没有交集,CDN 不会返回任何分片。响应状态码是 416。
示例:您站点上的一个文件的大小是 100 字节。CDN 收到该文件一个 multi-range 的请求,Range
头部值是 bytes=0-30, 200-300
。在这个情况下,CDN 不会返回任何分片。
如果请求成功,CDN 会返回 206 响应状态码,并且响应中包含以下头部 Content-Type: multipart/byteranges; boundary=xxxxxxxxxxxxx
。响应正文中会包含所有请求的分片,每个分片有自己的 Content-Type
和 Content-Range
头部,并且是以 boundary
头部的值分隔的。
说明
在响应正文中,第一个分片前没有空行。参见下方的响应示例。
请求示例
curl http://www.example.copm/ -v -H "Range: bytes=0-10, 20-50"
响应示例
响应头
HTTP/1.1 206 Partial Content Server: Byte-nginx Content-Type: multipart/byteranges; boundary=cfdc7e2afe8 Content-Length: 357
响应正文
--cfdc7e2afe8 Content-Range: bytes 0-10/612 Content-Type: text/html <!DOCTYPE h --cfdc7e2afe8-- Content-Range: bytes 20-50/612 Content-Type: text/html l> <head> <title>Welcome to ngi --cfdc7e2afe8--