@SmartDengg
2016-11-21T05:59:45.000000Z
字数 1076
阅读 2182
应用开发过程中,不仅要保质保量,还要考虑用户体验,优化产品细节。
提高网络访问速度的同时还应该减少不必要的流量消耗。
对网络访问进行拦截,统计每一次网络请求的请求体(如果存在的话)和响应体大小,或者一些重要的头信息字段,如果数据流超过设定的阈值,则视为异常,存入本地数据库列表,并提供上传功能。
其中关于API接口的统计,可用来分析接口请求的稳定性,但最重要的还是可以判断哪些接口容易造成访问超时,从而解决用户的“刷新了半天也刷新不出来数据”等抱怨,或者说在一定程度上可以用来分析用户行为。
另外,关于PIC接口的统计,则可以同来定位服务端返回的图像是否会造成流量的过度消耗,甚至太大的图片根本无法加载进Android系统的内存。
客户端本地建数据库表,进行统计和并提供对接大数据服务器的调用函数。
根据不同场景,进行分析:
整个应用消耗的流量,通过系统API-TrafficStats
,统计应用消耗的总流量
普通API**异常访问接口,统计访问时长,良好网络WIFI, 4G, 3G默认阈值1000毫秒,较差网络默认3000毫秒,视为异常。(**api_flatten)
普通API接口访问总流量统计,以接口为单位 ,统计该接口当天的流量消耗等信息(api)。
图像下载接口,统计图像异常下载所消耗的流量,默认情况下1M视为异常下载(pic),可设定的最小阈值不能小于256KB。
数据库的每条信息中都会携带日期字段,如2016-11-11,以及创建该条数据的毫秒时间戳。
参数名 | 类型 | 含义 | 说明 |
---|---|---|---|
timestamp | long | 记录的时间 | 单位毫秒 |
duration | long | 当前指标好使 | 单位毫秒 |
url | string | 接口URL | - |
network | string | 当前网络类型 | WIFI,4G,3G,2G,UNKOWN |
method | string | HTTP接口方法 | GET/POST |
type | string | 类型 | api/pic |
实际存储结果如下:
参数名 | 类型 | 含义 | 说明 |
---|---|---|---|
datatime | string | 记录的时间 | - |
url | string | 接口URL | - |
totalflow | long | 一天总流量 | 单位Byte |
maxflow | string | 当天接口最大单次流量 | 单位Byte |
count | int | 接口访问次数 | - |
type | string | 类型 | api/pic |
实际存储结果如下:
参数名 | 类型 | 含义 | 说明 |
---|---|---|---|
timestamp | long | 记录的时间 | - |
url | string | 接口URL | - |
flow | long | 图像大小 | 单位Byte |
type | string | 类型 | api/pic |
实际存储结果如下:
API-Interceptor
PIC-Interceptor