Http服务器有很多,比如,比较著名的有Apache、Nginx等,Apache会默认开启对断点续传的支持。因此,如果直接通过Web服务器来提供文件的下载,可以不必做特别的配置,即可享受到断点续传的好处。
断点续传是在发起HTTP请求的时候加入RANGE头来告诉服务器客户端已经下载了多少字节。等所有这些请求都返回之后,再把得到的内容一块一块的拼接起来得到完整的资源。简单来说,判断服务器是否支持断点续传,看Web服务器是否支持Range请求即可。
curl -i --range 0-9 https://image.jianke.com/upload/prodimage/201712wm/201712495031691.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10 100 10 0 0 1 0 0:00:03 0:00:03 --:--:-- 322HTTP/1.1 206 Partial Content
Server: nginx
Date: Mon, 16 Sep 2019 06:28:11 GMT
Content-Type: application/octet-stream
Content-Length: 1001
Last-Modified: Wed, 31 Jul 2019 04:42:36 GMT
Connection: keep-alive
ETag: "5d411c3c-a78d40f"
Content-Range: bytes 0-1000/175690767
若能够找到 Content-Range,则表明服务器支持断点续传。有些服务器还会返回 Accept-Ranges,输出结果 Accept-Ranges: bytes ,说明服务器支持按字节下载。