- N +

断点续传

文章目录 [+]

首先我们来看下HTTP Header中的两个特殊字段,一个在请求头中叫Range,表示本次请求要求服务器返回的数据范围,另一个在响应头中,是Content-Range,表示本次服务器返回的数据范围。


来看个栗子,我在下载一个文件,有2048B大小,当我收到1024B数据时,由于某种不可预知的原因中断了,这时我只想把剩下没下完的数据拉回来,那么我在请求头面会这样写Range: bytes=1024-,表示我要从1024B开始拉取后面的数据,究竟还剩下有多少数据我也不知道,所以有个“-”单独在那里。然后服务器在响应里面会这样写Content-Range:bytes 1024-/2048,这个表示返回了从1024B到文件结尾的全部数据,同时告诉了我这个文件总共2048B大小。


可以看出,请求头里写Range,可以指定请求某一个片段的数据,相应的响应包里面用Content-Range的表示返回数据片段在整个文件中的位置。


我们再脑洞大开一下,如果我把这个文件分成4个片段,然后再用4个线程来同时下载相应的片段。请求参数类似下图这样:

微信图片_20180404175108.jpg

最后把它们拼在一起,那么我们的下载同样大小的文件,就只需要以前1/4的时间了。


其实这也就是多线程下载工具的基本原理,你懂了吗?


作者:huchao
未来永远在它该来的路上,能够把握的只是此时此刻——万折必东
返回列表
上一篇:
下一篇:
评论列表 (暂无评论,共639人参与)参与讨论

还没有评论,来说两句吧...

发表评论中国互联网举报中心

快捷回复: