2 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
由于以下代碼,您為客戶(hù)端編寫(xiě)的代碼只是直接發(fā)送 tar 文件:
reader, err := gzip.NewReader(f)
...
request, err := http.NewRequest("POST", "http://localhost:8080/results", reader)
如果您.tar.gz直接發(fā)送文件內(nèi)容,則需要在服務(wù)器上對(duì)其進(jìn)行壓縮。例如:
request, err := http.NewRequest(..., f)
我認(rèn)為這更接近您應(yīng)該期望第三方客戶(hù)表現(xiàn)出的行為。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
顯然不是,但也許...
Golang 為 http 客戶(hù)端(和服務(wù)器)提供了非常好的支持。這是最早支持 http2 的語(yǔ)言之一,API 的設(shè)計(jì)清楚地表明了他們對(duì)快速 http 的關(guān)注。
這就是他們Accept-Econding: gzip
自動(dòng)添加的原因。這將大大減少服務(wù)器響應(yīng)的大小,然后優(yōu)化傳輸。
但是 gzip 仍然是 http 1 中的一個(gè)選項(xiàng),并非所有客戶(hù)端都會(huì)將此標(biāo)頭推送到您的服務(wù)器。
請(qǐng)注意,Content-Type
描述了您發(fā)送的數(shù)據(jù)類(lèi)型(這里是 tar.gz,但可能是application/json
, test/javascript
, ...),當(dāng)Accept-Encoding
描述數(shù)據(jù)為傳輸編碼的方式時(shí)
Go 將負(fù)責(zé)透明地Accept-Encoding
為您處理數(shù)據(jù),因?yàn)樗?fù)責(zé)數(shù)據(jù)的傳輸。然后由你來(lái)處理,Content-Type
因?yàn)橹挥心阒廊绾谓o你收到的內(nèi)容賦予意義
- 2 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報(bào)