移動端Hybird的網絡層優化策略

1、前端代碼策略:域名切換(多域名部署),解決DNS緩存及域名劫持html

2、客戶端策略前端

客戶端在空閒時ping cdn節點域名列表中的域名,測量延時、丟包等數據。若是延遲 > xxx,丟包 > xxx ,則在本次生命週期內將該域名拉入黑名單,使用網絡質量最好的cdn節點android

客戶端打開頁面時:應loadurl('https://' + {{ cdnhost }} + /path/......)。 cdnhost應該根據網絡質量進行選擇ios

頁面打開頁面時,若是同域名跳轉:應loadurl('https://' + {{ location.host }} + /path/......)。使用上個頁面的hostweb

 

不過這個方案有兩個問題:緩存

一、若是dns自己被污染後指向的ip也是能ping通的,依然會產生異常。若是要準的話可能須要前端佈一個固定的小資源來進行判斷cookie

二、html域名和資源域名自己就不一樣的狀況比較麻煩,好比頁面在a域,資源在b域的話,則沒法完成控制。網絡

3、阿里雲的httpdns能力session

能夠利用阿里雲的httpdns能力解決,可是webview層面的劫持仍需本身實現阿里雲

httpdns概述

httpdns + androidwebview

httpdns + ioswebview

阿里雲cdn與httpdns配合

httpdns下如何使用cookie

https://mp.weixin.qq.com/s/LGEmNa2qxdjdhy4yY6CN2w

4、客戶端與前端的日誌關聯

客戶端的每一次打開的生命週期記錄一個openid。

客戶端的每個page/窗口/activity 記錄一個sessionid = openid-pageid

客戶端日誌的每次上報需攜帶sessionid和openid

客戶端打開每個web頁面,須要在url參數上攜帶client_sessionid = sessionid & client_openid = openid

若是存在client_sessionid,web頁的前端上報日誌都要攜帶client_sessionid

5、網絡質量統計(基於容錯方案1)

客戶端每一次打開,經過服務端接口,獲取用戶的寬帶和運營商信息,經過網絡切換的hook,更新用戶的寬帶和運營商信息

頁面的cdn節點域名須要進行統一,並保證每一個資源都有多個備用節點。由服務端統一下發,客戶端進行緩存

客戶端在空閒時ping cdn節點域名列表中的域名,測量延時、丟包等數據。若是延遲 > xxx,丟包 > xxx 則結合用戶的userid、寬帶和運營商信息進行上報。

相關文章
相關標籤/搜索