文章目录
0 序言
0.1 由来
Transfer-Encoding头部字段在HTTP/1.1中被引入,用于指示数据传输过程中使用的编码方式。常见的值包括chunked。当使用chunked传输编码时,数据以分块的形式传输,每一块都有自己的大小标识,直到最后一个块(大小为0)表示传输结束。
可以将Transfer-Encoding: chunked机制比作分批次发送邮件:
- 情景设定:
- 你需要寄送一大批邮件,但一次性发送可能会超出邮件系统的限制。
- 正常流程:
- 你将所有邮件一次性发送,可能会遇到系统限制或传输失败。
- 使用
Transfer-Encoding: chunked:- 你将邮件分批次发送,每次发送一部分,直到所有邮件发送完毕。
0.2 使用场景
-
大文件上传:当客户端需要上传大文件时,使用
chunked传输可以避免一次性传输大量数据,减轻服务器压力。 -
不确定的内容长度:在数据长度不确定的情况下,使用
chunked传输可以方便地逐块发送数据。- 减少失败率:分块传输可以避免一次性传输大量数据导致的传输失败。
- 提高效率:在数据生成过程中可以逐块发送数据,提高传输效率。
虽然Transfer-Encoding: chunked在某些情况下依然有用,但现代HTTP/2和HTTP/3协议中已经内置了多路复用和流控制机制,使其重要性有所降低:
- HTTP/2和HTTP/3:现代协议已经支持多路复用和流控制,可以高效处理大数据传输。
- 高效网络:现代网络基础设施的改进使得数据传输更加稳定和高效。
是否需要使用Transfer-Encoding: chunked取决于具体的应用场景:
- 需要:在使用HTTP/1.1的环境中,尤其是需要传输大数据或不确定长度的数据时,依然可以使用。
- 不需要:在使用HTTP/2或HTTP/3的环境中,已经不需要显式设置
chunked传输。
1 Transfer-Encoding: chunked的机制
Transfer-Encoding 是一个请求和响应消息头,用于指示数据传输过程中使用的编码方式。常见的值包括chunked。
规范中规定,chunked表示数据以分块的形式传输,每一块都有自己的大小标识,直到最后一个块(大小为0)表示传输结束。
例如,如果使用chunked,服务器可以逐块接收数据,而不是一次性接收所有数据。

最低0.47元/天 解锁文章
1106

被折叠的 条评论
为什么被折叠?



