假設我們有一個函數處理一個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