移动端Hybird的网络层优化策略

一、前端代码策略:域名切换(多域名部署),解决DNS缓存及域名劫持

二、客户端策略

客户端在空闲时ping cdn节点域名列表中的域名,测量延时、丢包等数据。如果延迟 > xxx,丢包 > xxx ,则在本次生命周期内将该域名拉入黑名单,使用网络质量最好的cdn节点

客户端打开页面时:应loadurl('https://' + {{ cdnhost }} + /path/......)。 cdnhost应该根据网络质量进行选择

页面打开页面时,如果同域名跳转:应loadurl('https://' + {{ location.host }} + /path/......)。使用上个页面的host

 

不过这个方案有两个问题:

1、如果dns本身被污染后指向的ip也是能ping通的,依然会产生异常。如果要准的话可能需要前端布一个固定的小资源来进行判断

2、html域名和资源域名本身就不同的情况比较麻烦,比如页面在a域,资源在b域的话,则无法完成控制。

三、阿里云的httpdns能力

可以利用阿里云的httpdns能力解决,但是webview层面的劫持仍需自己实现

httpdns概述

httpdns + androidwebview

httpdns + ioswebview

阿里云cdn与httpdns配合

httpdns下如何使用cookie

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

四、客户端与前端的日志关联

客户端的每一次打开的生命周期记录一个openid。

客户端的每一个page/窗口/activity 记录一个sessionid = openid-pageid

客户端日志的每次上报需携带sessionid和openid

客户端打开每一个web页面,需要在url参数上携带client_sessionid = sessionid & client_openid = openid

如果存在client_sessionid,web页的前端上报日志都要携带client_sessionid

五、网络质量统计(基于容错方案1)

客户端每一次打开,通过服务端接口,获取用户的宽带和运营商信息,通过网络切换的hook,更新用户的宽带和运营商信息

页面的cdn节点域名需要进行统一,并保证每个资源都有多个备用节点。由服务端统一下发,客户端进行缓存

客户端在空闲时ping cdn节点域名列表中的域名,测量延时、丢包等数据。如果延迟 > xxx,丢包 > xxx 则结合用户的userid、宽带和运营商信息进行上报。

 

posted @ 2019-04-23 17:23  地铁程序员  阅读(129)  评论(0编辑  收藏  举报