《高性能iOS應用開發(fā)干貨》-網(wǎng)絡優(yōu)化

網(wǎng)絡監(jiān)聽

蜂窩無線系統(tǒng)(LTE悍引、4G、3G 等)對電量的消耗遠大于 WiFi 信號汞幢。根源在于 LTE 設備 基于多輸入钳榨、多輸出技術舰罚,使用多個并發(fā)信號以維護兩端的 LTE 鏈接。
應該避免在沒有連接WIFI的情況下進行高帶寬消耗操作薛耻,因此营罢,我們需要

  • 在進行任何網(wǎng)絡操作之前,先檢查網(wǎng)絡的連接是否可用
  • 持續(xù)監(jiān)視網(wǎng)絡的可用性饼齿,并在連接狀態(tài)變化時給予適當反饋
    蘋果公司提供了示例代碼(http://apple.co/1Q3gRKL)饲漾,以檢查和監(jiān)聽網(wǎng)絡狀態(tài)的變化。如 果 你 的 項 目 使 用 了 CocoaPods缕溉, 那 么 請 使 用 Tony Million 的 Reachabilitypod(https:// github.com/tonymillion/Reachability)考传。

網(wǎng)絡請求過程

正常一條網(wǎng)絡請求需要經(jīng)過的流程是這樣:
1.DNS 解析,請求DNS服務器倒淫,獲取域名對應的 IP 地址伙菊。
2.與服務端建立連接,包括 tcp 三次握手敌土,安全協(xié)議同步流程镜硕。
3.連接建立完成,發(fā)送和接收數(shù)據(jù)返干,解碼數(shù)據(jù)兴枯。

DNS查找

發(fā)起連接的第一步是 DNS 查找。如果你的應用嚴重依賴網(wǎng)絡操作矩欠,DNS 的查找時間會使應用變慢财剖。

為了最大限度地減少 DNS 查詢時間所產(chǎn)生的延遲,你應該遵循以下的最佳實踐癌淮。
? 最小化應用使用的專有域名的數(shù)量躺坟。按照路由的一般工作方式,多個域名是不可避免的乳蓄。
最好是能做到以下幾點:
(1) 身份管理(登錄咪橙、注銷、配置文件) (2) 數(shù)據(jù)服務(API 端點)
(3) CDN(圖片和其他靜態(tài)人工產(chǎn)品)
有可能需要其他域名(例如虚倒,用于提供視頻美侦、上傳檢測數(shù)據(jù)、具體的子數(shù)據(jù)服務魂奥、廣告 投放菠剩,甚至是國家特定的全球本地化)。如果子域名數(shù)量上升至兩位數(shù)耻煤,那么勢必會引 發(fā)擔憂具壮。
? 在應用啟動時不需要連接所有的域名准颓,可能只需要身份管理和初始畫面所需的數(shù)據(jù)。對 于后續(xù)的子域名棺妓,嘗試更早地進行 DNS 解析瞬场,也被稱為 DNS 預先下載。為實現(xiàn)此操作涧郊, 你可以參考以下兩點。
如果子域名和主機在控制范圍內(nèi)眼五,你可以配置一個預設的 URL妆艘,不返回任何數(shù)據(jù),只 返回 HTTP 204 的狀態(tài)碼看幼,然后提前對該 URL 發(fā)起連接批旺。
第二個方法是使用 gethostbyname 執(zhí)行一個明確的 DNS 查找。然而诵姜,針對不同的協(xié)議汽煮, 主機可能會解析至不同的 IP,例如棚唆,HTTP 請求可能會解析至一個地址暇赤,而 HTTPS 會 解析至另一個地址。雖然不是很常見宵凌,但第 7 層的路由可以根據(jù)實際的請求解析 IP 地 址鞋囊,例如,圖像是一個地址瞎惫,視頻是另外一個地址溜腐。鑒于這些因素,在連接之前解析 DNS 經(jīng)常是無用的瓜喇,對主機進行偽連接會更有效挺益。

SSL握手時間

為了安全起見,可以假設應用中所有的連接均是通過 TLS/SSL 的(使用 HTTPS)乘寒。HTTPS在連接開始時望众,先進行 SSL 握手,SSL 握手主要是驗證服務器證書肃续,同時共享用于通信的 隨機密鑰黍檩。這一操作聽起來簡單,但是卻有很多步驟始锚,還會耗費較多時間(見圖 7-3)刽酱。


圖 7-3.png

你應該遵循以下的最佳實踐。

  • 最大程度地減少應用發(fā)起的連接數(shù)瞧捌。因此棵里,也需要減少應用連接的獨有域名的數(shù)量

  • 請求結束后不要關閉 HTTP/S 連接润文。
    為所有的HTTPS請求添加頭Connection: keep-alive。這確保了同樣的連接在下一次 請求時可以復用殿怜。

  • 使用域分片典蝌。如此一來,雖然連接的是不同的主機名头谜,你也可以使用同一個 socket骏掀,只 要它們解析為相同的 IP,可以使用相同的證書(例如柱告,在通配符域)就行了截驮。 域分片在 SPDY 及其后續(xù)版本——HTTP/2(https://http2.github.io)——中是可用的。你 需要一個支持上述任意一種格式的網(wǎng)絡庫际度。

end 書中內(nèi)容都來自于《高性能iOS應用開發(fā)干貨》葵袭,本文只進行簡單的摘錄

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市乖菱,隨后出現(xiàn)的幾起案子坡锡,更是在濱河造成了極大的恐慌,老刑警劉巖窒所,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹉勒,死亡現(xiàn)場離奇詭異,居然都是意外死亡吵取,警方通過查閱死者的電腦和手機贸弥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來海渊,“玉大人绵疲,你說我怎么就攤上這事〕家桑” “怎么了盔憨?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讯沈。 經(jīng)常有香客問我郁岩,道長,這世上最難降的妖魔是什么缺狠? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任问慎,我火速辦了婚禮,結果婚禮上挤茄,老公的妹妹穿的比我還像新娘如叼。我一直安慰自己,他們只是感情好穷劈,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布笼恰。 她就那樣靜靜地躺著踊沸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪社证。 梳的紋絲不亂的頭發(fā)上逼龟,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音追葡,去河邊找鬼腺律。 笑死,一個胖子當著我的面吹牛宜肉,可吹牛的內(nèi)容都是我干的疾渣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼崖飘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杈女?” 一聲冷哼從身側響起朱浴,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎达椰,沒想到半個月后翰蠢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡啰劲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年梁沧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇裤。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡廷支,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栓辜,到底是詐尸還是另有隱情恋拍,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布藕甩,位于F島的核電站施敢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狭莱。R本人自食惡果不足惜僵娃,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腋妙。 院中可真熱鬧默怨,春花似錦、人聲如沸骤素。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垃僚,卻和暖如春集绰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谆棺。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工栽燕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人改淑。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓碍岔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親朵夏。 傳聞我的和親對象是個殘疾皇子蔼啦,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355