移动端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、宽带和运营商信息进行上报。

相关文章
相关标签/搜索