http协议为啥使用传输编码例如分块编码Transfer-encoding:chunked?

采用分块传输主要的考量是对于体积较大的文件(eg:图片、文件),服务器不能每次都先把完整的文件读完,拿到Content-length再按照Transfer-Encoding: identity的方式返回。这样效率太低了,采用分块的方式可以实现边读边传,分块压缩传输,大大提高传输效率。其他的好处是:HTTP分块传输编码允许服务器为动态生成的内容维持HTTP持久链接。通常,持久链接需要服务器在开始发送消息体前发送Content-Length消息头字段,但是对于动态生成的内容来说,在内容创建完之前是不可知的。分块传输编码允许服务器在最后发送消息头字段。对于那些头字段值在内容被生成之前无法知道的情形非常重要,例如消息的内容要使用散列进行签名,散列的结果通过HTTP消息头字段进行传输。没有分块传输编码时,服务器必须缓冲内容直到完成后计算头字段的值并在发送内容前发送这些头字段的值。HTTP服务器有时使用压缩 (gzip或deflate)以缩短传输花费的时间。分块传输编码可以用来分隔压缩对象的多个部分。在这种情况下,块不是分别压缩的,而是整个负载进行压缩,压缩的输出使用本文描述的方案进行分块传输。在压缩的情形中,分块编码有利于一边进行压缩一边发送数据,而不是先完成压缩过程以得知压缩后数据的大小。参考文档:分块传输编码
■网友
如果一个网页是100K,但是缓存区只有64K,所有要分为发两包数据,有人说用流的方式也可以啊,但是流的方式没有办法做keep-alive的长连接啊


    推荐阅读