http演變曆史
http0.9于1991釋出
http1.0于1995釋出
http1.1于1999釋出
http2.0于2015釋出
http相關優化
影響http的快慢兩個主要因素
-
帶寬
目前帶寬速度基本不缺,現在到處是百兆寬帶 百兆光纖 千兆光纖
-
延遲
延遲是目前還可以優化的主要部分
- 浏覽器阻塞,浏覽器對于同一個域名同時請求個數是有限制,根據浏覽器核心不同,限制請求個數是不一,但基本是個位數,超過請求個數就會阻塞,必須等前面的請求完成
- DNS查詢,域名解析是比較費時的,但通常可以利用DNS緩存來減少域名解析時間,DNS查詢順序為:浏覽器緩存-電腦hosts檔案-本地DNS伺服器-根域名伺服器-頂級域名伺服器
- 建立連接配接,http是基于tcp的,每次建立連接配接需要進行三次握手和四次揮手
http1.0對比http1.1
- http1.1支援了長連接配接,在一個tcp連接配接上支援多個http請求,減少了建立和關閉連接配接所花費的時間
- http1.1增加了更多的緩存政策,比E-Tag、If-None-Match,http1.0使用的是last-modified、If-Modified-Since
http1.0和http1.1現存的問題
- 每一次傳輸資料都需要重建立立連接配接,延遲較多
- 傳輸均為明文,用戶端和服務端均無法驗證雙方身份,存在一定的資料安全
- 請求的header部分内容較大,增加傳輸成本,且很多時候header部分是不變的
- 雖然http1.1有長連接配接的功能,但長連接配接使用過多也給服務端帶來了更大的性能壓力,特别是對于一些圖檔類視訊類等資源型的伺服器,如果長期保持長連接配接他是沒必要的,但給伺服器是大的性能浪費
為了解決安全性問題
為了解決安全性問題就出現了https,https是http協定和ssl協定的組合使用
http2.0的出現
新特性
- 采用新的二進制格式,http1.1的格式是基于文本的,基于的文本的解析考慮場景是較為複雜的,因為文本表現是多樣的。而http2.0采用的是二進制,隻有0和1,解析較為友善
- 多路複用,即可以共享連接配接,不需要重複多次建立連接配接,多個請求可共用一個tcp連接配接
- header壓縮和緩存
- 服務端推送,支援伺服器主動向用戶端推送消息