curl并行下载时能否在配置文件中为各请求设置不同Range头?
curl并行下载时如何为每个请求配置独立的Range头?
这是配置方式错误导致的,curl默认会把配置文件里的参数全局累加,不是按你写的分段对应每个请求。你现在的写法会让所有请求带上三个Range头,而服务器一般只会识别第一个,所以才会出现所有分片都用0-1024范围的情况。
正确配置方式
要给每个并行请求单独设置参数,需要用next指令分隔不同的请求块,每个next之后的参数只作用于下一个请求。修正后的config.txt应该是这样:
url = "http://www.example.com" header = "Range: bytes=0-1024" output = "chunk1" next url = "http://www.example.com" header = "Range: bytes=1025-2049" output = "chunk2" next url = "http://www.example.com" header = "Range: bytes=2050-3074" output = "chunk3"
验证效果
执行你原来的命令即可:
curl --parallel --parallel-max 60 --config config.txt
此时每个请求会携带各自对应的Range头,下载对应的分片内容。
原配置失效原因
curl读取配置文件时,重复的参数(比如url、header、output)会被累加而非覆盖或分段。你原来的写法相当于给每个请求都添加了三个Range头:
Range: bytes=0-1024 Range: bytes=1025-2049 Range: bytes=2050-3074
而HTTP服务器处理多个Range头时,通常只会解析第一个,所以所有下载请求都用了0-1024的范围。
内容的提问来源于stack exchange,提问作者TryingHard
相关产品推荐
相关产品推荐

