🌜

HTTP 响应的分块传输

字数:277,预计阅读时间:1min

Transfer-Encoding 响应头用于告诉客户端服务器发送内容的编码格式。

其可选值有:

  • chunked:数据分块发送。此时应缺省 Content-Length 响应头。
  • compress:使用 Lempel-Ziv-Welch 算法进行传输的格式,目前没有浏览器在支持。
  • deflate:使用 deflate 压缩算法 zlib 结构。
  • gzip:使用 Lempel-Ziv coding 编码的压缩格式。
  • identity:标识身份函数(e.g. no compression, nor modification)。

也可以同时指定多个值,用逗号分隔,像这样:Transfer-Encoding: gzip, chunked

其中,chunked 就比较有意思了。它表示服务器下发到客户端的内容不是一次性完成的,而是分成一小块一小块(trunk)下发,过程中客户端与服务器的连接仍然维持不会断开。

在 Web Socket 没出来前,可利用这一机制实现长连接的效果。

示例

以 Node.js 为例的 Transfer-Encoding: gzip, chunked 示例:

</span>&lt;p&gt; chunk <span class="pl-s1"><span class="pl-pse">${</span>index<span class="pl-pse">}</span></span>&lt;/p&gt;<span class="pl-pds">
</span>&lt;!DOCTYPE html&gt;</span> <span class="pl-s">  &lt;html lang="en"&gt;</span> <span class="pl-s">  &lt;head&gt;</span> <span class="pl-s">  &lt;meta charset="utf-8"&gt;</span> <span class="pl-s">  &lt;title&gt;HTTP 分块传输示例&lt;/title&gt;</span> <span class="pl-s">  &lt;/head&gt;</span> <span class="pl-s">  &lt;body&gt;</span> <span class="pl-s">  &lt;h1&gt;HTTP 分块传输示例&lt;/h1&gt;</span> <span class="pl-s">  <span class="pl-pds">

Transfer-Encoding:chunked 分块传输示例

Transfer-Encoding:chunked 分块传输示例

总结

HTTP/2 中已经不支持 chunked 这一格式了,因为其本身提供了更加高级的流机制来实现类似功能。

相关资源

posted @   bloger11  阅读(4410)  评论(0编辑  收藏  举报

Bingo!!

少年,我看你骨骼清奇,怕是一名前端吧‽

腾讯内推长期有效,简历这边来 liuwayong@gmail.com

点击右上角即可分享
微信分享提示