1、App 的网络测试中性能优化方案 优化 DNS 解析和缓存由于我们的 App 网络服务主要基于 TCP 连接,为了将 DNS时间降至最低,我们内置了 Server IP 列表,该列表可以在App 启动服务中下发更新。App 启动后的首次网络服务会从Server IP 列表中取一个 IP 地址进行 TCP 连接,同时 DNS 解析会并行进行,DNS 成功后,会返回最适合用户网络的Server IP,那么这个 Server IP 会被加入到 Server IP 列表中被优先使用。网络质量检测针对网络连接和读写操作的超时时间,我们提出了网络质量检测机制。目前做到的是根据用户是在 2G/3G/4G/W
2、i-Fi的网络环境来设置不同的超时参数,以及网络服务的并发数量。2G/3G/4G 网络环境对并发 TCP 连接的数量是有限制的(2G 网络下运营商经常只能允许单个 Host 一个 TCP 连接),因此网络服务重要参数能够根据网络质量状况来动态设定对性能和体验都非常重要。 提供网络服务优先级和依赖机制由于网络对并发 TCP 连接的限制,就需要能够控制不必要的网络服务数量,因此我们在通讯模块中加入了网络服务优先级和依赖机制。发送一个网络服务,可以设置它的优先级,高优先级的服务优先使用长连接, 低优先级的就是用短连接。长连接由于是从长连接池中取到的 TCP 连接,因此节省了 TCP 连接时间。网络服
3、务依赖机制是指可以设置数个服务的依赖关系,即主从服务。假设一个 App 页面要发多个服务,主服务成功的情况下,才去发子服务,如果主服务失败了,自服务就无需再关心成功或者失败,会直接被取消。如果主服务成功了,那么子服务就会自动触发。提供网络服务重发机制移动网络不稳定,如果一次网络服务失败,就立刻反馈给用户你失败了,体验并不友好。我们提供了网络服务重发机制,即当网络服务在连接失败、写 Request 失败、读Response 失败时自动重发服务;长连接失败时就用短连接来做重发补偿,短连接服务失败时当然还是用短连接来补偿。这种机制增加了用户体验到的服务成功概率。减少数据传输量我们优化了 TCP 服务 Payload 数据的格式和序列化 /反序列化算法,从自定义格式转换到了 Protocol Buffer 数据格式,效果非常明显。序列化/反序列算法也做了调整,如果大家使用 JSON 数据格式,选用一个高效的反序列化算法,针对真实业务数据进行测试,收益明显。优化海外网络性能海外网络性能的优化手段主要是通过花钱,例如 CDN 加速,提高带宽,实现动静资源分离,对于 App 中的 Hybrid 模块优化效果非常明显。