在html中,我知道有一个分块编码。谁知道它的优势?
答案 0 :(得分:16)
它不是HTML的一部分 - 它是HTTP的一部分。
这意味着您可以在确切知道输出的大小之前开始将内容写入输出流。这意味着在开始传输之前,您不必在内存或磁盘上缓冲整个页面(或任何正在传送的内容)。
答案 1 :(得分:10)
你也需要意识到它的缺点。一些防火墙/防病毒软件希望下载完整的响应,以便他们可以检查它,从而阻止任何未完成的响应块到达客户端。
许多防火墙默认将块编码设置为阻止,尤其是在企业网络上。如果您希望人们能够通过其工作计算机访问您的Web服务,则需要https整个网站(因为无法检查https流量),或者避免分块传输。
我能想到的唯一情况就是https流媒体。如果你不需要流式传输,我觉得这不值得。
在此回应评论,因为我觉得这很重要。
分块响应的网络问题非常常见。在我目前的项目中(B2B所以每个客户都在企业网络背后)我估计大约3/4的客户遇到问题。
为了证明/反驳,我设置了一个测试,发送2个相同的响应,一个是常规的,一个是chunked(以1秒的间隔流式传输html块3分钟)。分块响应始终被阻止(客户观察到空白页面)或累积(客户观察空白页面3分钟,然后完整呈现html)。同样的分块响应在https上很好(客户观察到html的增量渲染,间隔为1秒)。我在不同的客户/防火墙上运行它。
这是一个已知问题。您可以阅读websockets,其吸引力的一部分是它们有助于克服这些非常常见的防火墙/代理问题。