【发布时间】:2010-10-24 22:33:33
【问题描述】:
查看各种网络服务器的 HTTP 标头,我注意到 Google.com 有:
client-transfer-encoding: "chunked"
什么是分块传输编码,我应该在我的网络服务器上使用它吗?
【问题讨论】:
-
顺便说一下,我运行的是 Apache 2.x Web 服务器
标签: apache encoding webserver chunked-encoding
查看各种网络服务器的 HTTP 标头,我注意到 Google.com 有:
client-transfer-encoding: "chunked"
什么是分块传输编码,我应该在我的网络服务器上使用它吗?
【问题讨论】:
标签: apache encoding webserver chunked-encoding
Chunked 可用于分多部分发送 HTTP 请求或响应,并在后续部分不可用时发送一部分。
多个请求-响应对可以通过单个 HTTP 连接传输。 (这是为了避免后续请求的 TCP connect() 开销。)为了实现这一点,客户端需要知道服务器响应在哪里结束。如果服务器生成 Content-Length 标头,则客户端可以对字节数进行倒计时。当没有字节要读取时,客户端可以发起下一个请求。但是,如果服务器事先不知道完整响应的长度,它如何生成 Content-Length 标头?解决方案是使用 chunked 而不是 Content-Length。
Apache(1.3 和 2)默认情况下,只要有意义(并且 HTTP 客户端支持),就会将静态文件作为 chunked 发送。您不必采取任何行动。如果您编写自己的 Web 应用程序,您可能会考虑手动生成分块响应。
请参阅http://www.research.att.com/~bala/papers/h0vh1.html 和http://developers.sun.com/mobility/midp/questions/chunking/ 了解更多信息。
【讨论】: