實(shí)踐調(diào)研iOS HTTP2.0的網(wǎng)絡(luò)性能優(yōu)化效果
推薦 + 挑錯(cuò) + 收藏(0) + 用戶(hù)評(píng)論(0)
前面的文章也提到了目前的移動(dòng)端網(wǎng)絡(luò)常見(jiàn)性能問(wèn)題,以及對(duì)應(yīng)的優(yōu)化策略,如果把HTTP1.1 替換為 HTTP2.0,可以說(shuō)是網(wǎng)絡(luò)性能優(yōu)化的一步大棋。這幾天對(duì) iOS HTTP2.0 進(jìn)行了簡(jiǎn)單的調(diào)研、測(cè)試,在此做個(gè)簡(jiǎn)單的總結(jié)
本文的大概思路是介紹 HTTP1.1 的弊端、HTTP2.0 的優(yōu)勢(shì)、HTTP2.0 的協(xié)商機(jī)制、iOS 客戶(hù)端如何接入 HTTP2.0,以及如何對(duì)其進(jìn)行調(diào)試。主要還是加深記憶、方便后期查閱,文末的資料相比本文或許是更有價(jià)值的。
HTTP 1.1
雖然 HTTP1.1 默認(rèn)是開(kāi)啟 Keep-Alive 長(zhǎng)連接的,一定程度上彌補(bǔ)了HTTP1.0每次請(qǐng)求都要?jiǎng)?chuàng)建連接的缺點(diǎn),但是依然存在 head of line blocking,如果出現(xiàn)一個(gè)較差的網(wǎng)絡(luò)請(qǐng)求,會(huì)影響后續(xù)的網(wǎng)絡(luò)請(qǐng)求。為什么呢?如果你發(fā)出1、2、3 三個(gè)網(wǎng)絡(luò)請(qǐng)求,那么 Response 的順序 2、3 要在第一個(gè)網(wǎng)絡(luò)請(qǐng)求之后,以此類(lèi)推
針對(duì)同一域名,在請(qǐng)求較多的情況下,HTTP1.1 會(huì)開(kāi)辟多個(gè)連接,據(jù)說(shuō)瀏覽器一般是6-8 個(gè),較多連接也會(huì)導(dǎo)致延遲增大,資源消耗等問(wèn)題
HTTP1.1 不安全,可能存在被篡改、被竊聽(tīng)、被偽裝等問(wèn)題。當(dāng)然,前陣子 Apple 推廣 HTTPS 的時(shí)候,相信很多人已經(jīng)接入 HTTPS
HTTP 的頭部沒(méi)有壓縮,header 的大小也是傳輸?shù)呢?fù)擔(dān),帶來(lái)更多的流量消耗和傳輸延遲。并且很多 header 是相同的,重復(fù)傳輸是沒(méi)有必要的。
服務(wù)端無(wú)法主動(dòng)推送資源到客戶(hù)端
HTTP1.1的格式是文本格式,基于文本做一些擴(kuò)展、優(yōu)化相對(duì)比較困難,但是文本格式易于閱讀和調(diào)試,但HTTPS之后,也變成二進(jìn)制格式了,這個(gè)優(yōu)勢(shì)也不復(fù)存在
HTTP 2.0
在 HTTP2.0中,上面的問(wèn)題幾乎都不存在了。HTTP2.0 的設(shè)計(jì)來(lái)源于 Google 的 SPDY 協(xié)議,如果對(duì) SPDY 協(xié)議不了解的話(huà),也可以先對(duì) SPDY 進(jìn)行了解,不過(guò)這不影響繼續(xù)閱讀本文
HTTP 2.0 使用新的二進(jìn)制格式:基本的協(xié)議單位是幀,每個(gè)幀都有不同的類(lèi)型和用途,規(guī)范中定義了10種不同的幀。例如,報(bào)頭(HEADERS)和數(shù)據(jù)(DATA)幀組成了基本的HTTP 請(qǐng)求和響應(yīng);其他幀例如 設(shè)置(SETTINGS),窗口更新(WINDOW_UPDATE), 和推送承諾(PUSH_PROMISE)是用來(lái)實(shí)現(xiàn)HTTP/2的其他功能。那些請(qǐng)求和響應(yīng)的幀數(shù)據(jù)通過(guò)流來(lái)進(jìn)行數(shù)據(jù)交換。新的二進(jìn)制格式是流量控制、優(yōu)先級(jí)、server push等功能的基礎(chǔ)
流(Stream):一個(gè)Stream是包含一條或多條信息、ID和優(yōu)先級(jí)的雙向通道
消息(Message):消息由幀組成
幀(Frame):幀有不同的類(lèi)型,并且是混合的。他們通過(guò)stream id被重新組裝進(jìn)消息中
多路復(fù)用:也就是連接共享,剛才說(shuō)到 HTTP1.1的 head of line blocking,那么在多路復(fù)用的情況下,blocking 已經(jīng)不存在了。每個(gè)連接中 可以包含多個(gè)流,而每個(gè)流中交錯(cuò)包含著來(lái)自?xún)啥说膸?。也就是說(shuō)同一個(gè)連接中是來(lái)自不同流的數(shù)據(jù)包混合在一起,如下圖所示,每一塊代表幀,而相同顏色塊來(lái)自同一個(gè)流,每個(gè)流都有自己的 ID,在接收端會(huì)根據(jù) ID 進(jìn)行重裝組合,就是通過(guò)這樣一種方式來(lái)實(shí)現(xiàn)多路復(fù)用。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
實(shí)踐調(diào)研iOS HTTP2.0的網(wǎng)絡(luò)性能優(yōu)化效果下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問(wèn)題? 377
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋(píng)果手機(jī)系統(tǒng)iOS 17遭用戶(hù)質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋(píng)果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬(wàn)部;消息稱(chēng) MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋(píng)果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過(guò)熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線(xiàn)iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開(kāi)源BIOS固件版本 448