Apache Web服务器-何时应使用分块传输编码?

Apache Web服务器-何时应使用分块传输编码?,apache,encoding,webserver,chunked-encoding,Apache,Encoding,Webserver,Chunked Encoding,查看各种web服务器HTTP头,我注意到Google.com有: client-transfer-encoding: "chunked" 什么是chuncked传输编码?我应该在我的web服务器上使用它吗?chuncked可用于发送多个部分的HTTP请求或响应,并在后续部分不可用时发送一个部分 可以通过单个HTTP连接传输多个请求-响应对。(这是为了避免后续请求的TCP connect()开销。)要实现这一点,客户端需要知道服务器响应的结束位置。如果服务器生成内容长度头,客户端可以倒计时字节数

查看各种web服务器HTTP头,我注意到Google.com有:

client-transfer-encoding: "chunked"

什么是chuncked传输编码?我应该在我的web服务器上使用它吗?

chuncked可用于发送多个部分的HTTP请求或响应,并在后续部分不可用时发送一个部分

可以通过单个HTTP连接传输多个请求-响应对。(这是为了避免后续请求的TCP connect()开销。)要实现这一点,客户端需要知道服务器响应的结束位置。如果服务器生成内容长度头,客户端可以倒计时字节数。当没有剩余的字节可读取时,客户端可以启动下一个请求。但是,如果服务器事先不知道完整响应的长度,它将如何生成内容长度头呢?解决方案是使用分块而不是内容长度

Apache(1.3和2)默认情况下,只要有意义(HTTP客户机支持),就会将静态文件作为分块发送。你不必采取任何行动。如果编写自己的Web应用程序,可能会考虑手工生成块响应。
请参阅和了解更多信息。

顺便问一下,我运行的是Apache2.x web服务器,这与http 1.1 keep alives有什么关系?它们基本上是一样的吗,或者web服务器即使不支持keep alives也能发送分块响应吗?分块可以在没有keep alive的情况下使用,但这没有意义,因为没有keep alive的分块没有任何好处。我认为这不正确,一个区块需要在一个连接中发送,否则就不会有与两个区块相关的上下文。。想象一下,一台服务器接收到大量连接,这些连接从块开始(只有十六进制长度,crlf然后是有效负载)。