转:携程App的网络性能优化实践
http://kb.cnblogs.com/page/519824/
携程App的网络性能优化实践
受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据。真正的难点在于后面的性能优化
下面对文章中的几点进行总结和整理,作为个人的笔记
常见的网络性能问题:
1.DNS问题
- DNS被劫持或失效
- DNS解析慢或者失败
2.TCP连接问题
- TCP的连接端口被封
- TCP连接超时
3.write/Read问题
- 设置合理的读写超时时长
- 客户端所处环境的常用端口被限制
- 网络切换(即当用户的网络在WIFI/4G/3G/2G类型中切换时,其客户端IP会发生变化,如果此时正在进行网络服务通讯,那么Socket连接自身已经失效,最终也会导致网络服务失败)
4.传输Payload过大
- 传的多就传的慢
5.复杂的国内外网络情况
优化方案,目标是:连得上、连得快、传输时间短
优化实践一:优化DNS解析和缓存
提前内置一份Server IP表,在APP首次网络服务会从Server IP表中选择一个,同时DNS解析会并行进行,DNS解析成功之后,会返回最适合当前的IP值,将其加入到Server IP表中。
优化实践二:网络质量检测
- 根据当前的网络质量,对网络连接的参数进行不同方案的配置
优化实践三:提供网络服务优先级和依赖机制
优化实践四:提供网络服务重发机制
优化实践五:减少数据传输量
- 高效的数据格式和序列化/反序列算法
- 图片优化
优化实践六:优化海外网络性能