使用分块编码有什么好处?

use*_*949 3 html http

在html中,我知道有一个分块编码.谁知道它的优势?

Jon*_*eet 16

它不是HTML的一部分 - 它是HTTP的一部分.

这意味着您可以在确切知道输出的大小之前开始将内容写入输出流.这意味着在开始传输之前,您不必在内存或磁盘上缓冲整个页面(或任何正在传送的内容).


RAD*_*ADA 11

你也需要意识到它的缺点.一些防火墙/防病毒软件希望下载完整的响应,以便他们可以检查它,从而阻止任何未完成的响应块到达客户端.

许多防火墙默认将块编码设置为阻止,尤其是在企业网络上.如果您希望人们能够通过其工作计算机访问您的Web服务,则需要https整个网站(因为无法检查https流量),或者避免分块传输.

我能想到的唯一情况就是https流媒体.如果你不需要流式传输,我觉得这不值得.

在此回应评论,因为我认为这很重要.

网络问题与分块响应非常常见.在我目前的项目中(B2B所以每个客户都在企业网络背后)我估计大约3/4的客户遇到问题.

为了证明/反驳,我设置了一个测试,发送2个相同的响应,一个常规响应和一个chunked(以1秒的间隔流式传输html块3分钟).分块响应始终被阻止(客户观察到空白页面)或累积(客户观察空白页面3分钟,然后完整呈现html).同样的分块响应在https上很好(客户观察到html的增量渲染,间隔为1秒).我在不同的客户/防火墙上运行它.

这是一个已知的问题.您可以阅读websockets,其吸引力的一部分是它们有助于克服这些非常常见的防火墙/代理问题.

  • 我从未遇到过您提到的问题。你能提供一些证据吗? (2认同)