1. 程式人生 > >App的網路測試中效能優化方案

App的網路測試中效能優化方案

優化DNS解析和快取

由於我們的App網路服務主要基於TCP連線,為了將DNS時間降至最低,我們內建了Server IP列表,該列表可以在App啟動服務中下發更新。App啟動後的首次網路服務會從Server IP列表中取一個IP地址進行TCP連線,同時DNS解析會並行進行,DNS成功後,會返回最適合使用者網路的Server IP,那麼這個Server IP會被加入到Server IP列表中被優先使用。

網路質量檢測

針對網路連線和讀寫操作的超時時間,我們提出了網路質量檢測機制。目前做到的是根據使用者是在2G/3G/4G/Wi-Fi的網路環境來設定不同的超時引數,以及網路服務的併發數量。2G/3G/4G網路環境對併發TCP連線的數量是有限制的(2G網路下運營商經常只能允許單個Host一個TCP連線),因此網路服務重要引數能夠根據網路質量狀況來動態設定對效能和體驗都非常重要。

提供網路服務優先順序和依賴機制

由於網路對併發TCP連線的限制,就需要能夠控制不必要的網路服務數量,因此我們在通訊模組中加入了網路服務優先順序和依賴機制。傳送一個網路服務,可以設定它的優先順序,高優先順序的服務優先使用長連線,低優先順序的就是用短連線。長連線由於是從長連線池中取到的TCP連線,因此節省了TCP連線時間。

網路服務依賴機制是指可以設定數個服務的依賴關係,即主從服務。假設一個App頁面要發多個服務,主服務成功的情況下,才去發子服務,如果主服務失敗了,自服務就無需再關心成功或者失敗,會直接被取消。如果主服務成功了,那麼子服務就會自動觸發。

提供網路服務重發機制

行動網路不穩定,如果一次網路服務失敗,就立刻反饋給使用者你失敗了,體驗並不友好。我們提供了網路服務重發機制,即當網路服務在連線失敗、寫Request失敗、讀Response失敗時自動重發服務;長連線失敗時就用短連線來做重發補償,短連線服務失敗時當然還是用短連線來補償。這種機制增加了使用者體驗到的服務成功概率。

減少資料傳輸量

我們優化了TCP服務Payload資料的格式和序列化/反序列化演算法,從自定義格式轉換到了Protocol Buffer資料格式,效果非常明顯。序列化/反序列演算法也做了調整,如果大家使用JSON資料格式,選用一個高效的反序列化演算法,針對真實業務資料進行測試,收益明顯。

優化海外網路效能

海外網路效能的優化手段主要是通過花錢,例如CDN加速,提高頻寬,實現動靜資源分離,對於App中的Hybrid模組優化效果非常明顯。