HTTP中的chunked是什么

问题

HTTP/1.1中,响应头中的Transfer-Encoding: chunked是什么意思?

回答

在HTTP/1.1中,Transfer-Encoding: chunked是一种传输编码方式,用于在响应中分块传输数据。这种方式允许服务器在不知道内容长度的情况下发送响应,适用于动态生成的内容或流式数据。

对于HTML内容,使用chunked编码时,可以提高响应速度,浏览器可以在接收到第一个数据块后立即开始渲染页面,而不必等待整个响应完成。这对于需要实时更新或逐步加载的内容非常有用。

对于动态生成的内容,可能不知道最后的数据大小,更适合使用chunked编码。尽早把生成的内容发送出去,还能节省服务器内存占用。

格式

长度\r\n
内容\r\n
长度\r\n
内容\r\n
长度(0)\r\n
内容(空)\r\n

例如:

4\r\n
Wiki\r\n
5\r\n
pedia\r\n
E\r\n
 in\r\n
\r\n
chunks.\r\n
0\r\n
\r\n

废弃

在 HTTP/2 中,Transfer-Encoding: chunked 被废弃,因为 HTTP/2 引入了更先进的 帧(frame)机制 和 流(stream)控制,已经内建了流式传输能力,无需使用传统的 chunked 编码,并且还支持多路复用。


最后修改于 2025-07-10