非常值得學習的文章,別的不說,網路請求成功率從95到 99.5這個資料 代表一切了。
工具profile檢視網路請求
debug log看報文
charles看報文、mock
直接使用url
網路協議
可以考慮摒棄http,僅使用tcp,原因有3點
1.http無法優化弱網
2.http需要dns解析
3.網路連線,傳送請求,接受響應在http上的定製性優化不方便
連線維護
有兩個概念:
1.piping同時傳送多請求
2.mutiplexing二進位制分幀可以亂序接受
可以考慮摒棄這兩點,用最簡單的fifo。
維護若干連線,還可以同時處理乙個大請求,如果連線全部在使用中,才開啟乙個臨時連線。
弱網、網路抖動
維護連線數降到1
動態調整connection、write、read超時時間
網路型別切換,連線會失效(ip port ip port是對應的),關閉所有連線,開啟新的連線,同時對任務進行重試
資料格式
protobuf
重試機制
如果失敗,不再用原有連線,而是開啟臨時連線,對於建立連線、序列化報文、傳送請求3個階段進行重試(不會產生冪等問題,只要監控好確保請求沒有發出去)
應用層4大策略
1.打包請求
2.預載入
3.任務分優先順序
(低優先順序:比如點讚,因為使用者可能不斷點讚、取消贊,所以先ui展示,等退出頁面後再發請求;
高優先順序:請求資料更新ui)
4.錯峰(打包是對的,但是100個請求一起發就不好了,因為大部分的網路請求是快取執行緒池,只有非核心執行緒,如果100個加進來,會短時間建立100個執行緒,其後果可以想象)
壓縮報文
http可以壓縮header
body可以用gzip壓縮
傳輸webp
做好快取工作
http1.0強制 伺服器給伺服器上的到期時間
對比 給資源的最後修改時間
http2.0強制 伺服器給到期時間段
對比 給資源的唯一標識
監聽wifi、充電
Android 網路優化
最近一直在看okgohttp 開源 並嘗試著去修改它,總結一下 網路優化 1.減少網路請求的數量,盡量合併的網路請求,一次查詢中完成多個零散資料的查詢 2.做好網路快取 3.多執行緒處理,耗時工作及計算放在子執行緒中 4.設定超時時間,資料壓縮傳送,比如從伺服器端獲取列表資料,如果可以最好是能將伺服...
Android網路請求優化
學習自trinea大神還有一些另外的文章 分析工具 1.android內建的profile monitor 不僅可以看網路,還可以看記憶體,cpu 2.提供弱網的工具,測試弱網 還有wifi情況 3.截獲網路包,進行分析 url一般是用網域名稱直接請求的,雖然local dns會快取,但是最好還是能...
Android網路請求優化
安全方面 首先是防劫持,我們可以考慮使用 httpdns。這裡需要注意 httpdns 只是乙個概念,並不是乙個現有的開源庫。它與傳統的 dns 解析的區別在於 httpdns 會繞過運營商的 dns 伺服器,直接與 dns 伺服器的 80 埠進行互動,有效地防止了網域名稱劫持。關於 dns 解析的...