HTTP断点续传原理

作为一名程序媛我也想快点进步,希望慢慢积累吧。给自己加加油。

1. 断点续传的必要性

大部分下载类的app,都会遇到网络不好的情况,如果下载到最后一步却下载失败了,是不是会让人很头疼。如果能重试下载从上次下载的文件位置继续下载,就显得很必要了。关乎用户体验问题。非常 非常重要!!!!!😂

2.了解断点续传之前,了解下http协议。

HTTP(Hyper Text Transfer Protocol)协议是用于从万维网(www)服务器传输超文本到本地浏览器的传送协议。它是基于TCP/IP协议来传递数据的。

HTTP请求由三部分组成:状态行、请求头、请求体。

先看一下客户端请求头的一个例子:

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Range:bytes:500-900
Cache-Control: max-age=0

这里不详细展开,我们只讨论和断点续传有关的几个请求头属性。

1.Range: 只请求实体的一部分。比如:Range:bytes:500-900
2.Etag:请求实体的唯一标识符。(可以是文件md5) 比如:ETag: “737060cd8c284d8af7ad3082f209582d”
3.Last-Modified:最后资源的更改时间。用于服务器响应头 。如: Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
4.If-Range:如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag。 例子:If-Range: “737060cd8c284d8af7ad3082f209582d”
5.Content-Range:用于服务器响应头。记录服务器返回数据的范围及文件总大小。如:Content-Range: bytes 0-499/22400
6.If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码。 如:

If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT

有的同学可能分不清楚是客户端的请求头还是服务器端的响应头,👇下面理一下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值