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層面的劫持仍需本身實現阿里雲
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、寬帶和運營商信息進行上報。