http 關於長連線和分塊傳輸

2021-07-04 19:03:13 字數 737 閱讀 6480

動態生成的內容比如壓縮流,動態網頁

+js hide,事先並不知道content-length, 為了提高響應速度,希望一邊生成一邊傳輸,通常以關閉連線表明內容傳完完畢。但是希望連線keep-alive呢?

解決辦法是chunked transfer encoding,rfc規範要求如果是http/1.1,服務端和客戶端都必須支援。

例子:http/1.1 200 ok\r\n

transfer-encoding: chunked\r\n

trailer: checksum\r\n

\r\n

a\r\n

0123456789\r\n

0\r\n

checksum:crc\r\n

\r\n

可以看出,比如由整塊傳輸大小10位元組資料優化為分塊傳輸:5+3+2+0,先前的content-length,如果是要content-md5, 需要先把檔案內容過一遍,暫存下計算值,在重新讀一遍檔案,可以稱作是storage-and-forword方式。

對於本地檔案,事先就知道大小,沒有必要搞這個。對於客戶端實時訪問hls分片檔案,保持長連線也許會避免一些開銷,但是hls小檔案的初衷是cdn,連線怎麼可能動態遷移呢?另外在wifi,3g網路,長連線更是不可能。

個人認為http/1.1缺省長連線還是針對pc lan這樣的環境設計的,已經不適應當前複雜的網路環境,增加了web server的複雜性。

(我今天嘗試去實現,發現對先前的**影響太大了)

HTTP長連線和WebSocket長連線的區別

要理解http長連線和websocket長連線的區別,首先要理解一下什麼是http的長連線和短連線。首先需要消除乙個誤解 http協議是基於請求 響應模式的,因此客戶端請求後只要服務端給了響應,本次http請求就結束了,沒有長連線這一說。那麼自然也就沒有短連線這一說了。所謂的http分為長連線和短連...

HTTP 長連線和短連線

1.http協議與tcp ip協議的關係 http的長連線和短連線本質上是tcp長連線和短連線。http屬於應用層協議,在傳輸層使用tcp協議,在網路層使用ip協議。ip協議主要解決網路路由和定址問題,tcp協議主要解決如何在ip層之上可靠的傳遞資料報,使在網路上的另一端收到發端發出的所有包,並且順...

HTTP的長連線和短連線

http的長連線和短連線本質上是tcp長連線和短連線。http屬於應用層協議.短連線 瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束就中斷連線。長連線 當乙個網頁開啟完成後,客戶端和伺服器之間用於傳輸http資料的 tcp連線不會關閉,如果客戶端再次訪問這個伺服器上的網頁,會繼續使...