# 文件传输
# 小文件传输
上传图片、PDF等
# 大文件传输
上传视频或者其他比较大的内容,可以使用数据压缩或者分块传输。
# 数据压缩
可以设置Encoding等相关参数
# 分块传输
在响应头里面设置Transfer-Encoding: chunked
,或者Content-Length
(两者不能共存),会将数据分成多个块进行传输。
# 分块编码规则
包含长度头和数据块,长度头包含了16进制数字的长度和CRLF的换行, 数据块中包含了数据内容和CRLF,最后一个分块以长度为0的数据作为结束。
# 范围请求
通过范围请求,用户或者浏览器可以只请求资源的一部分,比如视频拖动进度条。服务器在支持范围请求的情况下,需要通过Accept-rang: bytes
告诉客户端。客户端请求的时候,通过设置Range:bytes=x-y
,请求获取x-y之间的数据。客户端请求的时候,设置多个区间段Range:bytes=x-y,m-n
,响应头的MIME为multipart/byteranges
表示多个分块数据。