移動網絡下的性能優化之網絡篇

做者:王軍鵬
野狗iOS資深工程師,國內第一批iOS開發者,曾在人人擔任高級工程師。多年逆向工程開發經驗,對iOS系統底層有深刻了解。緩存

野狗官博:https://blog.wilddog.com/
野狗官網:https://www.wilddog.com/
公衆訂閱號:wilddogbaas服務器

圖片描述

上篇文章咱們分析了移動網絡耗電較高的緣由,並給出了相應的解決方案。本篇文章咱們將分析移動網絡延遲較高的緣由,並給出相應的優化方案。網絡

移動網絡延遲高的緣由

喚醒延遲

在移動網絡下,手機要接入網絡,必須先向控制平臺發送申請。只有當控制平臺將手機切換到Active狀態,手機才能進行通訊,這一過程在3G網絡下消耗的時間通常在500-2500ms之間,咱們稱之爲喚醒延遲。這是一個形成移動網絡延遲的緣由。性能

HTTP延遲

在APP開發中,咱們會常常用到HTTP協議,HTTP延遲就是在使用這個協議時產生的。優化

圖片描述

pasted-image一個HTTP請求從客戶端發送到服務端的過程當中,須要進行域名查詢,這時客戶端就會發起一個DNS Query。這個過程所需的時間和ISP(互聯網服務供應商)、請求頁面知名度、是否存在緩存以及服務器的響應時間都有關係。客戶端在拿到解析出的IP後,還要通過咱們熟知的TCP三次握手,這個過程須要耗時幾百毫秒,甚至可能達到幾秒。TCP握手完成後,還需發送HTTP請求傳遞咱們的參數,取得服務器返回的數據。若是是HTTPS協議的話還須要進行TLS握手,這就又要增長兩輪的延遲等待。spa

全部的這些都須要消耗時間,再加上RRC控制平臺喚醒手機到Active狀態所要消耗的時間,造成如下3G網絡和4G網絡的對比圖。視頻

圖片描述

從表中咱們能夠看到:在沒有計算服務器反應時間的狀況下,3G網絡下一條HTTP請求須要600-3500ms,4G網絡下大概也須要0.5s。blog

核心網絡延遲

下圖是在移動網絡下,一個手機向服務器傳輸數據的完整過程。圖片

圖片描述

首先,手機須要切換到Active狀態才能正常通訊。手機向無線接入網絡發送一條通訊請求,無線接入網絡收到後,給手機分配通訊資源。這一步驟在3G網絡最多須要花費2s,手機切換到Active狀態後,開始向無線接入網絡傳輸數據,基站無線接入網絡收到後把數據發送給服務網關,服務網關將數據傳給數據網關,數據網關再傳輸給服務器。資源

咱們再看看服務器收到數據後給手機返回數據的通訊過程,如圖所示:

圖片描述

服務器將數據傳給數據網關,數據網關把數據交給服務網關,這時服務網關並不知道這設備在哪,只有把這個任務交給無線接入網絡,無線接入網絡找到設備後將手機切換到Active狀態準備接受數據,而後告訴服務網關能夠發送數據了,服務網關收到指令後將數據交給無線接入網絡,無線接入網絡再將數據發給手機。這樣一次通訊纔算是最終完成。

咱們只想完成一次請求,而在這傳輸過程當中咱們卻不得不忍受各類各樣的延遲,包括路由選擇延遲、喚醒延遲、控制平臺延遲、骨幹網絡延遲、用戶平臺延遲等。

如何下降延遲

提早喚醒

若是對速度要求很高,咱們能夠提早喚醒手機,並使其一直處於喚醒狀態,固然這是以損耗電池爲代價的。另外從用戶體驗上來講,對於超過2s的請求都應該給一個進度狀態。

數據緩存

最快的請求就是不請求。網絡通訊的延遲是不能夠避免的,可是對於已經請求過的數據請務必緩存下來,在下次再次訪問時直接從本地獲取。這樣不只能讓用戶有更流暢的操做,即便是在斷網的狀況下也能使用APP。

壓縮資源

GZIP壓縮資源。GZIP壓縮通常對純文本內容可壓縮到原大小的40%,這樣能夠有效減小服務器帶寬佔用,提升咱們咱們的請求速度。

使用WebP圖片格式

使用合適的圖片格式。通常圖片資源至少佔整個APP數據量的50%以上,因此壓縮圖片大小對提升性能也是很是重要的。這裏推薦使用WebP圖片格式,在質量相同的狀況下,WebP格式圖片的體積要比JPEG格式圖片小40%。

使用不一樣策略

如今2G,3G,4G網絡並存,網絡速度差距也很大,針對每種網絡應該有不一樣的應對策略。好比2G網絡不自動打開圖片,3G,4G網絡詢問是否播放視頻等。

使用CDN

在全國各地多佈設CDN加速節點,特別是網絡流量比較大的區域,也能有效緩解核心網絡所帶來的延遲。

相關文章
相關標籤/搜索