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

溫馨提示×

溫馨提示×

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

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

http1.1相對http2有什么缺點

發布時間:2022-01-19 09:23:54 來源:億速云 閱讀:383 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關http1.1相對http2有什么缺點,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

服務器搭建完成之后,我們在public文件夾新建一個頁面,這個頁面中的資源主要由圖片、css、js構成,代碼如下:

http1.1相對http2有什么缺點

觀察html部分我們發現,頁面設置了許多img標簽,此時我們訪問這個頁面,觀察瀏覽器的network,截圖如下:

http1.1相對http2有什么缺點

仔細觀察其規律,瀏覽器請求圖片資源時,最大并發數為6,這里要解釋一下,瀏覽器針對同一個域名的網站最大的tcp鏈接數是根據瀏覽器規定的,谷歌瀏覽器默認的針對同一個域名的最大tcp鏈接數是6,這樣的話頁面中所有的圖片資源,必須通過這6個tcp長連接來完成請求響應。

這里有一個比較形象的比喻,假如有一百個人要往返跨過一條河,河面上有6座橋,每座橋每次只能有一個人通過,那么同一時刻最多只能6個人同時過河,不能再多了,http1.1協議下的請求響應就是基于這個模型的。

在這里引入一個名詞RTT:RTT(Round-Trip Time): 往返時延。在計算機網絡中它是一個重要的性能指標,表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據后便立即發送確認),總共經歷的時延。

一個http請求響應最少要經歷一個RTT,如果這個請求或者響應攜帶的數據量比較大,那么可能會需要經歷多次傳輸,也就是需要經歷多個RTT,我們這里簡單計算,假設一個http請求只需要一個RTT,一個RTT所用時間為n秒。

如果在一個頁面中只一個TCP長連接,現在100個資源所用時間為100*RTT*n,如果用6個TCP鏈接,那么時間縮短為100*RTT*n/6。

在http1.1協議下,針對瀏覽器對每個域名最大并發數的限制,我們可以利用域名分片的技術來進一步縮短時間,什么叫域名分片呢,給同一個網站設置多個域名,比如a.com和b.com都指向同一個網站,這樣瀏覽器對同一個網站的最大并發數就會隨著域名的增加而增加,時間進一步縮短為:100*RTT*n/(6*域名個數)。

但是,隨著域名增多也會出現一些問題:

1、服務器壓力增大。

2、瀏覽器解析域名也會花費時間,域名越多花費時間也越多。

上文關注的的技巧主要是利用瀏覽器的特性突破了其最大并發數,但是這樣做治標不治本。

TCP本身存在一些問題,如慢啟動,當網速發生變化時,TCP的速度也會隨之波動,速度同樣受影響。

TCP本身存在競爭關系,多個tcp同時連接會互相搶占網速。最重要的一點是:基于http1.1的tcp長連接有隊頭阻塞的現象,如果你不明白什么是http1.1的隊頭阻塞,歡迎閱讀這篇文章:白話http隊頭阻塞。

聊完http1.1協議下瀏覽器TCP連接的特性,咱們來思考一個問題:頁面解析過程中最先需要加載的是什么文件呢? 

當然是CSS文件和js文件,但是大家思考一下css文件和js文件是什么時候加載的,是在html文件這個響應完成之后,瀏覽器快速掃描頁面中的關鍵資源,而后下載js和css。這中間就可能出現一個空閑時間,這個空閑時間有兩種可能,html中標簽太多,解析比較費勁,雖然css下載完成但是依然需要等待DOM解析完成,另外一種是DOM解析完成CSS卻沒有下載完成,依然需要等待,這里無論我們怎么做,兩者基本不會同步,我們應該如何做呢?在http1.1版本下我們能做的就是盡量縮短關鍵資源的加載,不管是html、css還是js。

在http1.1協議下,我們可以通過如下幾種方案來做:

1、壓縮代碼,去掉注釋

2、對不依賴dom的js文件合理應用async和defer避免dom解析的阻塞

3、對css應用媒體查詢,對某些特定場景的css避免加載。

4、合理調整文件的個數和大小,這里不能一味的合并所有css或者js,如果某個css或者js體積過大,同樣影響效率,只能不斷的調整測試。本質就是減少資源加載花費的RTT,并且不要超過瀏覽器對同一域名最大的并發數。

5、合理利用CDN

6、應用域名分片技術。

以上便是今天文章的內容,總結一下:

1、在http1.1版本中我們可以針對瀏覽器對同一個域名支持的最大TCP鏈接數這個特性,使用域名分片技術來加快資源下載,但是這樣會也會隨之帶來一些問題,服務器壓力增大,瀏覽器解析域名花費時間增多,看似并沒有很好的解決我們的問題。

2、http1.1中的TCP長連接存在隊頭阻塞的問題,針對同一個tcp鏈接中的每一http請求必須響應之后后面的http才能繼續。

3、TCP本身的一些不好的特性,慢啟動,多條TCP鏈接競爭網速。

針對這些問題我們給出了一下解決方案,但是終歸不是太優雅,隨著互聯網的高速發展http1.1似乎越來越不能滿足當下用戶的需求了,http2在這眾望所歸的時刻到來了,下篇文章帶領大家利用http2來改善http1.1的這些不足。

最后提兩個問題,在http1.1版本中我們能實現如下需求嗎?

1、假如頁面中要加載多個資源,有的資源比較重要,我們想要使其優先加載,應該怎么做呢?

2、當我們請求某個網址的時候,服務器能不能提前將頁面需要的重要資源推送過來,而不是等待瀏覽器掃描html后再去加載?

3、既然多個TCP鏈接存在競爭關系,我們能不能讓瀏覽器將針對同一個域名的所有http請求都基于同一個tcp鏈接呢?這樣既減少了競爭,也減少了tcp鏈接的耗時操作。

關于“http1.1相對http2有什么缺點”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

乌恰县| 聂拉木县| 永兴县| 饶阳县| 静宁县| 班玛县| 静乐县| 玉龙| 西乡县| 晴隆县| 上林县| 句容市| 孝义市| 什邡市| 海门市| 中宁县| 谷城县| 兴和县| 宁明县| 东乡县| 岗巴县| 齐齐哈尔市| 拜城县| 鹤峰县| 南充市| 承德市| 曲阜市| 成武县| 高清| 焉耆| 福鼎市| 遂川县| 芷江| 淮滨县| 治县。| 英山县| 营山县| 绩溪县| 中牟县| 天祝| 葫芦岛市|