缺陷:執行緒阻塞,在同一時間,同一網域名稱的請求有一定數量限制,超過限制數目的請求會被阻塞。
2. http1.0(短連線)
缺陷:瀏覽器與伺服器只保持短暫的連線,瀏覽器的每次請求都需要與伺服器建立乙個tcp連線(tcp連線的新建成本很高,因為需要客戶端和伺服器三次握手),伺服器完成請求處理後立即斷開tcp連線,伺服器不跟蹤每個客戶也不記錄過去的請求;
解決方案:新增頭資訊——非標準的connection欄位connection: keep-alive
改進點:
持久連線(與http1其它版本的最大區別)
引入了持久連線,即tcp連線預設不關閉,可以被多個請求復用,不用宣告connection: keep-alive(對於同乙個網域名稱,大多數瀏覽器允許同時建立6個持久連線)
管道機制
即在同乙個tcp連線裡面,客戶端可以同時傳送多個請求。
分塊傳輸編碼
即服務端每產生一塊資料,就傳送一塊,採用」流模式」而取代」快取模式」。
新增請求方式
put:請求伺服器儲存乙個資源;
delete:請求伺服器刪除標識的資源;
options:請求查詢伺服器的效能,或者查詢與資源相關的選項和需求;
trace:請求伺服器回送收到的請求資訊,主要用於測試或診斷;
connect:保留將來使用
缺點:雖然允許復用tcp連線,但是同乙個tcp連線裡面,所有的資料通訊是按次序進行的。伺服器只有處理完乙個請求,才會接著處理下乙個請求。如果前面的處理特別慢,後面就會有許多請求排隊等著。這將導致「隊頭堵塞」
避免方式:一是減少請求數,二是同時多開持久連線
特點:採用二進位制格式而非文字格式;
完全多路復用,而非有序並阻塞的、只需乙個連線即可實現並行;(解決了線頭阻塞的問題,與http1最重要的區別)
使用報頭壓縮,降低開銷
伺服器推送
4.1 二進位制協議
http/1.1 版的頭資訊肯定是文字(ascii編碼),資料體可以是文字,也可以是二進位制。http/2 則是乙個徹底的二進位制協議,頭資訊和資料體都是二進位制,並且統稱為」幀」:頭資訊幀和資料幀。
二進位制協議解析起來更高效、「線上」更緊湊,更重要的是錯誤更少。
4.2 完全多路復用
http/2 復用tcp連線,在乙個連線裡,客戶端和瀏覽器都可以同時傳送多個請求或回應,而且不用按照順序一一對應,這樣就避免了」隊頭堵塞」。
4.3 報頭壓縮
http 協議是沒有狀態,導致每次請求都必須附上所有資訊。所以,請求的很多頭字段都是重複的,比如cookie,一樣的內容每次請求都必須附帶,這會浪費很多頻寬,也影響速度。
對於相同的頭部,不必再通過請求傳送,只需傳送一次;
http/2 對這一點做了優化,引入了頭資訊壓縮機制;
一方面,頭資訊使用gzip或compress壓縮後再傳送;
另一方面,客戶端和伺服器同時維護一張頭資訊表,所有欄位都會存入這個表,產生乙個索引號,之後就不傳送同樣欄位了,只需傳送索引號。
4.4 伺服器推送
http協議通常承載於tcp協議之上,在http和tcp之間新增乙個安全協議層(ssl或tsl),這個時候,就成了我們常說的https.
http1 和 http2 的區別
網路延遲問題主要由於隊頭阻塞 head of line blocking 導致頻寬無法被充分利用。隊頭阻塞是指當順序傳送的請求序列中的乙個請求因為某種原因被阻塞時,在後面排隊的所有請求也一併被阻塞,會導致客戶端遲遲收不到資料。由於報文header一般會攜帶 user agent cookie acc...
總結筆記Http 1
1.建立在tcp上的無狀態連線 2.客戶端發請求,服務端響應客戶端.整個過程叫 事務 事務結束,服務端會新增一條日誌 http請求 1.狀態行 請求方式method 資源路徑url 協議版本version 2.請求頭 訪問的網域名稱 使用者 cookie等資訊等 3.請求正文 http請求的資料。h...
HTTP1 1優化和HTTP2的優化
通過管道技術,在乙個tcp連線中,傳送多個http請求,不需要等待伺服器端對前乙個請求的響應之後,再傳送下乙個請求,但是伺服器端在響應時,要嚴格按照接收請求的順序傳送,即先接收到的請求,需要先傳送其響應,客戶端瀏覽器也是如此,接收響應的順序要按照自己傳送請求的順序來。隊首阻塞問題 如果前面收到的乙個...