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