App的网络测试中性能优化方案
来源:互联网 发布:mac os sierra 编辑:程序博客网 时间:2024/05/21 08:34
优化DNS解析和缓存
由于我们的App网络服务主要基于TCP连接,为了将DNS时间降至最低,我们内置了Server IP列表,该列表可以在App启动服务中下发更新。App启动后的首次网络服务会从Server IP列表中取一个IP地址进行TCP连接,同时DNS解析会并行进行,DNS成功后,会返回最适合用户网络的Server IP,那么这个Server IP会被加入到Server IP列表中被优先使用。
网络质量检测
针对网络连接和读写操作的超时时间,我们提出了网络质量检测机制。目前做到的是根据用户是在2G/3G/4G/Wi-Fi的网络环境来设置不同的超时参数,以及网络服务的并发数量。2G/3G/4G网络环境对并发TCP连接的数量是有限制的(2G网络下运营商经常只能允许单个Host一个TCP连接),因此网络服务重要参数能够根据网络质量状况来动态设定对性能和体验都非常重要。
提供网络服务优先级和依赖机制
由于网络对并发TCP连接的限制,就需要能够控制不必要的网络服务数量,因此我们在通讯模块中加入了网络服务优先级和依赖机制。发送一个网络服务,可以设置它的优先级,高优先级的服务优先使用长连接,低优先级的就是用短连接。长连接由于是从长连接池中取到的TCP连接,因此节省了TCP连接时间。
网络服务依赖机制是指可以设置数个服务的依赖关系,即主从服务。假设一个App页面要发多个服务,主服务成功的情况下,才去发子服务,如果主服务失败了,自服务就无需再关心成功或者失败,会直接被取消。如果主服务成功了,那么子服务就会自动触发。
提供网络服务重发机制
移动网络不稳定,如果一次网络服务失败,就立刻反馈给用户你失败了,体验并不友好。我们提供了网络服务重发机制,即当网络服务在连接失败、写Request失败、读Response失败时自动重发服务;长连接失败时就用短连接来做重发补偿,短连接服务失败时当然还是用短连接来补偿。这种机制增加了用户体验到的服务成功概率。
减少数据传输量
我们优化了TCP服务Payload数据的格式和序列化/反序列化算法,从自定义格式转换到了Protocol Buffer数据格式,效果非常明显。序列化/反序列算法也做了调整,如果大家使用JSON数据格式,选用一个高效的反序列化算法,针对真实业务数据进行测试,收益明显。
优化海外网络性能
海外网络性能的优化手段主要是通过花钱,例如CDN加速,提高带宽,实现动静资源分离,对于App中的Hybrid模块优化效果非常明显。
TestBird
- App的网络测试中性能优化方案
- .net中性能的优化和提高
- Android 中性能测试 Monkey的用法
- SQL server中性能优化
- WAS中性能优化配置
- 工作中性能优化总结
- 关于android应用开发中性能优化的一些建议
- JAVA编程中性能优化的一些地方
- Java中性能优化的35种方法汇总
- Android 中性能优化之布局优化
- 软件测试中性能测试结果分析
- Unity3D中性能优化8个提示
- Hibernate中性能优化之缓存
- Android中性能优化(apk瘦身)
- 分析postgresql中性能优化问题
- Unity中性能优化的一些经验与总结(脚本优化篇)
- 最全的软件测试工具LR中性能数据翻译(一)
- Android 中性能优化之lint使用总结
- nmap的参数详解
- SQL多表连接查询(详细实例)
- java面向对象
- wampservers 中的mysql控制台遇到的错误(输入命令无响应、错误提示乱码)
- HDU 1071 The area(抛物线与直线围成的面积)
- App的网络测试中性能优化方案
- git 切换分支
- MyBatis数据源DataSource分类
- 如何正确地写出单例模式
- 单链表合并排序
- 《利用python进行数据分析》学习笔记(六)
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint-实体报错
- 设计模式之组合模式
- QML中sql语句的实现