必威体育Betway必威体育官网
当前位置:首页 > 运营推广

文件断点续传功能的原理

时间:2019-08-20 00:15:35来源:运营推广作者:seo实验室小编阅读:64次「手机版」
 

断点续传

现在的文件上传下载功能,都是支持断点续传的。那么这看似很简单的小功能,背后实现的原理是怎样的呢?

断点续传支持从文件上次中断的地方开始传送数据,而并非是从文件开头传送。

断点续传的原理如下:

由于浏览器与服务端的通讯是基于HTTP协议,所以断点续传功能的原理就是靠HTTP请求来实现。

断点续传功能最核心的原理就是利用HTTP请求中的两个字段:客户端请求头中的Range,和服务端响应头的content-Range。

我们举一个例子,模拟一下整个过程。

1、浏览器请求服务器上的一个文件时,所发出的请求如下(假设文件名为 file.zip,服务器域名为W):

GET /file.zip HTTP/1.1     //浏览器用GET方式获取file.zip文件,http协议版本1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, APPlication/vnd.ms-

excel, application/msword, application/vnd.ms-powerpoint     //可接受的响应内容(文件)类型

Accept-Language: zh-cn    //可接受的响应内容语言(简体中文)

Accept-Encoding: gzip, deflate    //可接受的响应内容的编码方式

User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; windows NT 5.0)   //浏览器的身份标识(浏览器类型)

Connection: Keep-Alive    //浏览器想要优先使用的连接类型

2、服务器收到请求后,寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:

200    //响应状态码(200标识成功)

Content-Length=123456789   //响应消息的长度(单位是字节

Accept-Ranges=bytes    //服务器所支持的内容范围(字节)

Date=Mon, 30 Apr 2001 12:56:11 GMT    //此消息被发送时的日期和时间

ETag=W/“02ca57e173c11:95b”    //资源的标识符

Content-Type=application/octet-stream    //当前内容的类型

Server=Microsoft-IIS/5.0    //服务器名称

Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT    //所请求的对象的最后修改日期

3、此时文件已经开始下载了,如果现在停止了下载,那么再次下载文件时就要从已经下载的地方继续下载。现在比如按下了继续下载,那么此时浏览器的请求内容如下:

GET /file.zip HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-

excel, application/msword, application/vnd.ms-powerpoint

Range: bytes=200000-   //告诉服务器 file.zip 这个文件从200000字节开始传,前面的字节不用传了

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Connection: Keep-Alive

4、此时服务器收到这个请求后,返回的信息如下:

206     //表示服务器已经成功处理了部分GET请求

Content-Length=123256789

Content-Range=bytes 200000-/123456789    //表示已经返回了200000B的文件数据,同时也返回了文件的全部大小

Date=Mon, 30 Apr 2001 12:55:20 GMT

ETag=W/“02ca57e173c11:95b”

Content-Type=application/octet-stream

Server=Microsoft-IIS/5.0

Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT

以上就是断点续传的原理,在不同客户端实现时只需要找到不同的开发语言实现提交Range的方法即可。

作为产品功能的设计者,每一个看似简单的小功能,其背后的实现原理都值得我们去研究,正所谓“知其然,更要知其所以然”。

相关阅读

旺铺后台新功能—微博淘宝版

微博也可以开通淘宝版,这个相信大家都知道了,但是在开通的时候如何开通,应注意哪些问题你知道吗?今天我们就一起来了解下微博淘宝版。

隐藏功能是彩蛋还是浪费

微信有一个隐藏功能,也许很多人不知道,就是在朋友圈中长按照相机icon可以直接输入文字。曾经我寻找这个功能无果,只好每篇文章发个自

标度变换原理及过程解释

工业上的仪表显示过程通常由下图 表示此时便要求单片机将ad送来的数值“翻译”为人们可以直观理解的数值,再送到数码管显示。于是

回源原理和CDN常见多级缓存

一、CDN回源 1、回源原理 源站内容有更新的时候,源站主动把内容推送到CDN节点。 常规的CDN都是回源的。即:当有用户访问某一

如何理解产品设计中的概念设计、功能规划?

2013年写于知乎,回答好友 @虫子 关于“概念设计”的三点疑问:1.“四步法:搜集、整理、判断、创新”是否贯穿整个产品设计流程;2.&#822

分享到:

栏目导航

推荐阅读

热门阅读