在html中,我知道有一种分块编码。有人知道它的优点吗?
发布于 2011-02-20 09:38:26
它不是HTML的一部分,而是HTTP的一部分。
这意味着您可以在确切知道输出将有多大之前就开始将内容写入输出流。这意味着在开始传输之前,您不必在内存或磁盘上缓冲整个页面(或正在交付的任何内容)。
发布于 2012-12-12 17:55:09
你也需要意识到它的缺点。一些防火墙/杀毒软件希望下载完整的响应,以便检查它,因此将阻止任何不完整的响应块到达客户端。
许多防火墙默认情况下将分块编码设置为阻止,特别是在公司网络上。如果你希望人们能够从他们的工作计算机上访问你的web服务,你需要https整个网站(因为https流量不能被检查),或者避免分块传输。
我能想到的唯一一种情况是https流媒体。在我看来,如果你不需要流媒体,那就不值得。
回复下面的评论,因为我认为它很重要。
与分块响应相关的网络问题非常常见。在我目前的项目中(B2B,所以每个客户都在公司网络后面),我估计大约有3/4的客户会遇到问题。
为了证明/反驳,我设置了一个测试,发送两个相同的响应,一个是规则的,一个是分块的(在3分钟内以1秒的间隔流式传输html的分块)。分块的响应始终被阻塞(客户观察空白页面)或累积(客户观察空白页面3分钟,然后完全呈现html)。同样的分块响应在https上也没问题(客户在1秒的间隔内观察到html的增量呈现)。我在不同的客户/防火墙上运行此程序。
这是一个已知的问题。你可以在websockets上读到,它们的吸引力之一是它们有助于克服这些非常常见的防火墙/代理问题。
https://stackoverflow.com/questions/5056227
复制相似问题