假设我们有一个函数处理一个HTTP请求,是这样的:Go中的HTTP ResponseWriter的写入函数缓冲区是否会被缓存?
func handler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("first piece of data"))
// do something
w.Write([]byte("second piece of data"))
}
我想知道,如果要w.Write()的第一个电话是刷新到客户端或不?
如果它被刷新,那么我们实际上对客户响应两次,这很奇怪,因为我们如何确定Content-Length
在第二次调用之前写入?
如果不刷新数据(比如数据在本地缓冲),那么如果我们在第一次调用时写入大量数据呢? (将堆栈溢出?)
任何解释将不胜感激! :)
HTTP的预告片都支持Go的'net/http'服务器和客户端实现。不,没有读取超时的客户端不会持续一整天。 HTTP的服务器输出缓冲策略与HTTP无关,是的,操作系统缓冲区写入套接字,在HTTP中是TCP套接字。你正在努力抨击别人的答案。 – thwd 2014-09-25 14:54:47
[是的,他们](https://golang.org/src/pkg/net/http/transfer.go#L32),我从现在开始会忽略你的评论。 – thwd 2014-09-25 15:01:39
[请停止评论。](https://golang.org/src/pkg/net/http/response.go#L253) – thwd 2014-09-25 16:36:03