1、HTTP HEAD方法
1 2 3 4 5 6 7 |
|
运行测试代码可以发现,HEAD方法只是返回资源信息,而不会返回数据体
应用场景:
(1) 获取资源Mimetype
(2) 获取资源文件大小,用于端点续传或多线程下载
2、使用块代码获取网络资源大小的方法
1 2 3 4 5 6 7 8 9 |
|
3、确定每次下载数据包的伪代码实现
1 2 3 4 5 6 7 8 9 10 11 12 |
|
4、HTTP Range的示例
n 通过设置Range可以指定每次从网路下载数据包的大小
n Range示例
n bytes=0-499 从0到499的头500个字节
n bytes=500-999 从500到999的第二个500字节
n bytes=500- 从500字节以后的所有字节
n bytes=-500 最后500个字节
n bytes=500-599,800-899 同时指定几个范围
n Range小结
n - 用于分隔
p 前面的数字表示起始字节数
p 后面的数组表示截止字节数,没有表示到末尾
n 用于分组,可以一次指定多个Range,不过很少用
5、分段Range代码实现
1 2 3 4 5 6 7 8 9 10 11 12 |
|
6、分段下载文件
1 2 3 4 5 6 7 8 9 |
|
提示:
如果GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是200(OK)
7、将数据写入文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
8、检查文件大小
1 2 3 4 5 6 7 |
|
提示:由于数据是追加的,为了避免重复从网络下载文件,在下载之前
- 判断缓存路径中文件是否已经存在
- 如果存在检查文件大小
- 如果文件大小与网络资源大小一致,则不再下载