iOS效能之HTTP2.0,ioshttp2.0

來源:互聯網
上載者:User

iOS效能之HTTP2.0,ioshttp2.0

在移動互連網領域蓬勃發展的今天,APP的效能也成為各大公司重點關注的方向,該系列文章主要針對iOS的效能的幾個方面做一些研究。

  • 什麼是HTTP2.0?

網上很容易搜到關於HTTP2.0的概念的文章,這裡不再累述。

蘋果從iOS9開始支援HTTP2.0,對iOS開發人員來說,即是iOS9開始,NSURLSession可以支援HTTP2.0。

因為蘋果已經打算廢棄NSURLConnection,所以NSURLConnection不能支援HTTP2.0。

UIWebView也不能支援HTTP2.0(當然,如果你使用UIWebView,然後使用NSURLProtocol,在NSURLProtocol中使用NSURLSession,這樣也是可以支援HTTP2.0的),WKWebView是可以的。

  • HTTP2.0相對HTTP1.1的優勢是什嗎?

主要有幾點:

1. 相同的Host佔用一個TCP連結

2. 請求可以設定優先權

3. 採用二進位協議,而不是之前的文本協議

4. 多工

5. 頭部壓縮

 

這幾點優勢裡面,我個人認為最為重要的,就是多工頭部壓縮,正是這兩項優勢,讓請求的效能得到了極大的提升。

  • 多工

什麼是多工呢?在HTTP1.1時代,一個TCP連結可以發送多個請求,但是需要排隊,一個一個的發送(遵循FIFO的原則),這就很容易產生阻塞(傳說中的head-of-line blocking),如:

 

可以看到,相同的connectionId裡面的多個請求,都是串列的(Timeline-Start time那一欄),所以,一旦有某個請求阻塞了,後面的請求都不能繼續進行。

到了HTTP2.0,在一個TCP連結中,請求不再需要排隊,而是輪詢發送的,如:

 

相同的connectionid裡面的多個請求,幾乎都是同時發起的(可以想象成單CPU,多線程的CPU輪詢機制),這樣效能就得到了極大提高

  • 頭部壓縮

這個概念比較好理解,現在APP的需求也是越來越複雜,導致了請求的頭部資訊也越來越多(Cookie,請求參數等),動輒超過1k,2k,十分影響效能。而HTTP2.0會對要求標頭和回應標頭做壓縮以提升請求效能。

  • 什麼是TCP連結?

前面有提到HTTP2.0對於一個Host會佔用一個TCP連結,這裡需要簡單介紹下TCP連結。

從底到高來看:

IP協議:對應於網路層

TCP協議:對應於傳輸層

HTTP協議:對應於應用程式層

 

TCP在建立連結的過程中,需要經過三向交握, HTTP協議是建立在TCP協議之上的,不過HTTP是短連結,一旦請求結束,連結要被釋放,但是為了提升服務端於用戶端之間請求的效率(減少TCP建立連結的效能損耗),所以雖然HTTP連結被釋放了,但是底層TCP連結還在(可以用wireshark抓包看看)。

但是TCP連結也不是無限多,iOS的NSURLSession是分配的4個TCP連結,MAC是6個。

 

這裡有兩篇比較全面的HTTP2.0的文章:

https://medium.com/apps-and-networking/http-2-makes-media-loading-3-15-times-faster-on-mobile-a455c3e68135#.kxd9z7eq4

 

http://www.floriangoessler.de/ios/2015/08/30/HTTP2-on-iOS.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.