網絡優化主要從三個方面進行
優化首先要弄清楚現狀,需要服務端和客戶端協同排查和打點統計。主要從速度、成功率、流量三方面來做優化。
-
Gzip壓縮
HTTP協議上的Gzip編碼是一種用來改進WEB應用程序性能的技術,用來減少傳輸數據量大小,減少傳輸數據量大小有兩個明顯的好處:- 以減少流量消耗
- 可以減少傳輸的時間
-
IP直連與HttpDns
DNS解析的失敗率佔聯網失敗中很大一種,而且首次域名解析一般需要幾百毫秒。針對此,我們可以不用域名,才用IP直連省去 DNS 解析過程,節省這部分時間 -
流量
使用WebP格式;同樣的照片,採用WebP格式可大幅節省流量,相對於JPG格式的圖片,流量能節省將近 25% 到 35 %;相對於 PNG 格式的圖片,流量可以節省將近80%。最重要的是使用WebP之後圖片質量也沒有改變。
使用縮略圖;App中需要加載的圖片按需加載,列表中的圖片根據需要的尺寸加載合適的縮略圖即可,只有用戶查看大圖的時候纔去加載原圖。不僅節省流量,同時也能節省內存!之前使用某公司的圖片存儲服務在原圖鏈接之後拼接寬高參數,根據參數的不同返回相應的圖片。 -
協議層的優化
使用最新的協議,Http協議有多個版本:0.9、1.0、1.1、2等。新版本的協議經過再次的優化,例如:
Http1.1版本引入了“持久連接”,多個請求被複用,無需重建TCP連接,而TCP連接在移動互聯網的場景下成本很高,節省了時間與資源;
Http2引入了“多工”、頭信息壓縮、服務器推送等特性。
新的版本不僅可以節省資源,同樣可以減少流量;
-
合併打包
合併網絡請求,減少請求次數。對於一些接口類如統計,無需實時上報,將統計信息保存在本地,然後根據策略統一上傳。這樣頭信息僅需上傳一次,減少了流量也節省了資源 -
網絡緩存
對服務端返回數據進行緩存,設定有效時間,有效時間之內不走網絡請求,減少流量消耗 -
網絡狀態
根據網絡狀態對網絡請求進行區別對待,2G與Wifi狀態下網絡質量肯定是不一樣的,那對應的網絡策略也應該是不一樣的。例如:在Wifi場景下可以進行數據的預取、一些統計的集中上傳等;而在2G場景下此類操作以及網絡請求的次數策略都應該調低。 -
其他
對於網絡優化,實際上和內存優化一樣,是一項投入巨大的事情。提升網絡的成功率尤爲困難。因此建議優先進行流量優化,減少干擾項;
弱網不僅僅指代網絡不好,移動互聯網的網絡帶寬很容易出現“跳變”,下一秒的傳送速度可能降到前一秒的幾十分之一;而且即便是信號滿格也傳不出一個字節;
對於真正的弱網,可以使用抓包工具進行模擬,也有聰明的小夥伴使用wifi精靈進行限速;
Facebook的開源項目augmented-traffic-control可以模擬不同的網絡環境,針對帶寬、時延抖動、丟包率、錯包率、包重排序率等方面,堪稱弱網調試神器;
數據格式大小比較,Protocol Buffer是Google的一種數據交換的格式,它獨立於語言,獨立於平臺。相較於目前常用的Json,數據量更小,意味着傳輸速度也更快。