美文网首页Java基础
HTTP必知必会——断点续传原理

HTTP必知必会——断点续传原理

作者: hhws | 来源:发表于2018-03-05 09:29 被阅读0次

要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。

HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:

1.客户端下载一个1024K的文件,已经下载了其中512K

2. 网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:

Range:bytes=512000-

这个头通知服务端从文件的512K位置开始传输文件

3. 服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:

Content-Range:bytes 512000-/1024000

并且此时服务端返回的HTTP状态码应该是206,而不是200。

但是在实际场景中,会出现一种情况,即在终端发起续传请求时,URL对应的文件内容在服务端已经发生变化,此时续传的数据肯定是错误的。如何解决这个问题了?显然此时我们需要有一个标识文件唯一性的方法。在RFC2616中也有相应的定义,比如实现Last-Modified来标识文件的最后修改时间,这样即可判断出续传文件时是否已经发生过改动。同时RFC2616中还定义有一个ETag的头,可以使用ETag头来放置文件的唯一标识,比如文件的MD5值。

终端在发起续传请求时应该在HTTP头中申明If-Match 或者If-Modified-Since 字段,帮助服务端判别文件变化。

另外RFC2616中同时定义有一个If-Range头,终端如果在续传是使用If-Range。If-Range中的内容可以为最初收到的ETag头或者是Last-Modfied中的最后修改时候。服务端在收到续传请求时,通过If-Range中的内容进行校验,校验一致时返回206的续传回应,不一致时服务端则返回200回应,回应的内容为新的文件的全部数据。

(转载自http://blog.csdn.net/xifeijian/article/details/8712439)

相关文章

  • HTTP必知必会——断点续传原理

    要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。 ...

  • HTTP必知必会

    作者:starok原文地址:http://www.cnblogs.com/starstone/p/4890409....

  • 优秀参考文章--性能优化

    Android 性能优化必知必会Android 性能优化必知必会

  • 待阅读文章

    Android 性能优化必知必会http://www.androidperformance.com/2018/05...

  • http总结

    参考前端必知必会HTTP请求系列 1.简介 HTTP协议(Hyper Text Transfer Protocol...

  • HTTP 必知必会的那些

    Http是我们经常打交道的网络应用层协议,它的重要性可能不需要再强调。但是实际上很多人,包括我自己可能对http了...

  • 02 | HTTP协议必知必会

    HTTP 和 HTML 有什么区别? 为什么会问这个问题?你可以把它当作一个入门测试,检测一下自己的对HTTP协议...

  • 必知必会HTTP网络知识

    一、什么是URI? URI, 全称为(Uniform Resource Identifier), 也就是统一资源标...

  • ios 后台下载,断点续传总结

    断点续传 demo 断点续传的原理是在HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头的Ran...

  • 深入拆解Tomcat&Jetty(二)

    HTTP协议必知必会 Tomcat和Jetty本身就是一个HTTP服务器+Servlet容器,所以了解HTTP协议...

网友评论

    本文标题:HTTP必知必会——断点续传原理

    本文链接:https://www.haomeiwen.com/subject/dsmcfftx.html