Range 请求头允许客户端只取资源的一部分:Range: bytes=0-1023 表示前 1KB。服务器若支持,返回 206 Partial Content 和 Content-Range: bytes 0-1023/5000(总长在斜杠后),并在普通 200 响应里用 Accept-Ranges: bytes 声明能力。不支持则忽略 Range 返回完整 200。

断点续传的实现:下载前记录已下载字节数 N,中断后续传时发 Range: bytes=N- 从断点继续;多线程加速下载则是先发 HEAD 拿 Content-Length,按字节区间切分给多个连接并行拉取,最后合并。两个细节值得提:1)If-Range 配合 ETag/Last-Modified 保证断点处资源没变了才续传,否则重发完整内容——资源变了还拼接旧数据会损坏文件;2)多范围请求(bytes=0-99,200-299)用 multipart/byteranges 复合响应。应用场景:视频播放拖动进度条、大文件下载、移动弱网环境。追问方向:为什么视频站点对 Range 支持是刚需、Range 滥用导致的带宽放大问题(如 PDF 阅读器逐页请求)。

(约 390 字)