中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTTP2改進了哪些功能

發布時間:2022-03-17 17:49:49 來源:億速云 閱讀:259 作者:iii 欄目:大數據

今天小編給大家分享一下HTTP2改進了哪些功能的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

HTTP版本簡史

  • HTTP/0.9:
    (1991年)基于GET請求的文本傳輸協議

  • HTTPS:
    (1994年)安全的HTTP傳輸協議

  • HTTP/1.0:
    (1996年)增加HTTP頭、擴展PUT、POST等方法

  • HTTP/1.1:
    (1999年)長連接、流水線支持,最廣泛使用的HTTP傳輸協議

  • SPDY:
    (2012年)針對HTTP的增強,工作在SSL層之上、HTTP層之下

  • HTTP/2:
    (2015年)二進制格式、多路復用、服務器“推送”、頭部壓縮

HTTP/2的開發基于SPDY進行躍進式改進在諸多修改中,最顯著的改進在于,HTTP/2使用了一份經過定制的壓縮算法,基于霍夫曼編碼,以此替代了SPDY的動態流壓縮算法,以避免對協議的Oracle攻擊——這一類攻擊以CRIME為代表。此外,HTTP/2禁用了諸多加密包,以保證基于TLS的連接的前向安全

2015年9月,Google宣布了移除對SPDY的支持,擁抱 HTTP/2,并將在Chrome 51中生效。

HTTP2改進了哪些功能

相比HTTP/1.1的改進

1. 解決串行的文件傳輸和隊頭阻塞問題

在HTTP/1.1中,當請求a文件時,b文件只能等待,等待a連接到服務器、服務器處理文件、服務器返回文件,這三個步驟。我們假設這三步用時都是1秒,那么a文件用時為3秒,b文件傳輸完成用時為6秒,依此類推。

此項計算有一個前提條件,就是瀏覽器和服務器是單通道傳輸

在HTTP/1.1的協議中,由于傳輸的request和response都是基本于文本的,這樣就會引發一個問題:所有的數據必須按順序傳輸,比如需要傳輸:hello,只能從h到o一個一個的傳輸,不能并行傳輸,因為接收端并不知道這些字符的順序,所以并行傳輸在HTTP1.1是不能實現的。

此外,隊頭阻塞問題在HTTP/2終于得到解決。
隊頭阻塞問題:每個 TCP 連接同時只能處理一個請求 - 響應,瀏覽器按 FIFO 原則處理請求,如果上一個響應沒返回,后續請求 - 響應都會受阻。為了解決此問題,出現了 管線化 - pipelining 技術,但是管線化存在諸多問題,比如第一個響應慢還是會阻塞后續響應、服務器為了按序返回相應需要緩存多個響應占用更多資源、瀏覽器中途斷連重試服務器可能得重新處理多個請求、還有必須客戶端 - 代理 - 服務器都支持管線化。

解決方案

HTTP/2引入二進制數據幀和流的概念,其中幀對數據進行順序標識,這樣瀏覽器收到數據之后,就可以按照序列對數據進行合并,而不會出現合并后數據錯亂的情況。同樣是因為有了序列,服務器就可以并行的傳輸數據,這就是流所做的事情。

此外,HTTP/2里的每個stream都可以設置依賴 (Dependency)和權重,可以按依賴樹分配優先級,解決了關鍵請求被阻塞的問題

2. 解決連接數過多

我們假設Apache設置了最大并發數為300,因為瀏覽器限制,瀏覽器發起的最大請求數為6,也就是服務器能承載的最高并發為50,當第51個人訪問時,就需要等待前面某個請求處理完成。

解決方案

我們來看一下,HTTP/2的多路復用是如何解決的。 HTTP/2對同一域名下所有請求都是基于流,也就是說同一域名不管訪問多少文件,也只建立一路連接。同樣Apache的最大連接數為300,因為有了這個新特性,最大的并發就可以提升到300,比原來提升了6倍!

此外,HTTP/2支持服務器推送。 瀏覽器發送一個請求,服務器主動向瀏覽器推送與這個請求相關的資源,這樣瀏覽器就不用發起后續請求。 這主要是針對資源內聯做出的優化,相較于HTTP/1.1 資源內聯的優勢:

  • 客戶端可以緩存推送的資源

  • 客戶端可以拒收推送過來的資源

  • 推送資源可以由不同頁面共享

  • 服務器可以按照優先級推送資源

3. Header內容冗余問題

Header內容內容多,而且每次請求Header不會變化太多,沒有相應的壓縮傳輸優化方案

解決方案

使用HPACK算法來壓縮首部內容。

升級之后可以節省的成本

  1. JS文件的合并
    我們現在優化的一個主要方向就是盡量的減少HTTP的請求數, 對我們工程中的代碼,研發時分模塊開發,上線時我們會把所有的代碼進行壓縮合并,合并成一個文件,這樣不管多少模塊,都請求一個文件,減少了HTTP的請求數。但是這樣做有一個非常嚴重的問題:文件的緩存。當我們有100個模塊時,有一個模塊改了東西,按照之前的方式,整個文件瀏覽器都需要重新下載,不能被緩存。現在我們有了HTTP/2了,模塊就可以單獨的壓縮上線,而不影響其他沒有修改的模塊。根據上面講的原理,我們盡可能將資源細粒化,文件分解地盡可能散,不用擔心請求數多

  2. 多域名提高瀏覽器的下載速度
    之前我們有一個優化就是把css文件和js文件放到2個域名下面,這樣瀏覽器就可以對這兩個類型的文件進行同時下載,避免了瀏覽器6個通道的限制,這樣做的缺點也是明顯的:
    1.DNS的解析時間會變長。
    2.增加了服務器的壓力。
    有了HTTP/2之后,請不要使用域名分片。

以上就是“HTTP2改進了哪些功能”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗山县| 凤山县| 梁平县| 满洲里市| 台中市| 彰化市| 鲁山县| 鄂托克前旗| 屯门区| 蕲春县| 达日县| 乌拉特后旗| 府谷县| 廊坊市| 上高县| 虞城县| 芒康县| 班玛县| 柏乡县| 海安县| 辉南县| 锡林郭勒盟| 肥城市| 那坡县| 广昌县| 益阳市| 大洼县| 天气| 佛坪县| 凤冈县| 兴国县| 凌源市| 济南市| 佛学| 治县。| 新昌县| 宜兰县| 巢湖市| 云南省| 乌拉特中旗| 咸阳市|