你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS性能之HTTP2.0

iOS性能之HTTP2.0

編輯:IOS開發綜合

本文將為大家說明IOS性能之HTTP2.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),如下圖:

iOS性能之HTTP2.0

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

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

iOS性能之HTTP2.0

相同的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

通本學習您是不是更了解ios開發了呢.感謝關注本站

[db:作者簡介][db:原文翻譯及解析]

【iOS性能之HTTP2.0】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved