移动端网络优化

标签: Android 性能优化 计划和总结 Android network Android网络优化 | 发表时间:2015-04-27 10:22 | 作者:Trinea
出处:http://www.trinea.cn

介绍下针对移动端的网络优化,不限于 Android,同样适用于 iOS 和 H5。
这篇文章首发在微信公众号 codekk

 

本文为性能优化系列第四篇,目前性能调优专题已完成以下部分:
性能优化总纲——性能问题及性能调优方式
性能优化第四篇——移动网络优化
性能优化第三篇——代码优化
性能优化第二篇——布局优化
性能优化第一篇——数据库性能优化
Android 性能调优工具 TraceView
性能优化实例

 

一个网络请求可以简单分为连接服务器 -> 获取数据两个部分。
其中连接服务器前还包括 DNS 解析的过程;获取数据后可能会对数据进行缓存。

 

一、连接服务器优化策略

1. 不用域名,用 IP 直连
省去 DNS 解析过程,DNS 全名 Domain Name System,解析意指根据域名得到其对应的 IP 地址。
http://www.codekk.com 的域名解析结果就是 104.236.147.76。

 

首次域名解析一般需要几百毫秒,可通过直接向 IP 而非域名请求,节省掉这部分时间,同时可以预防域名劫持等带来的风险。

 

当然为了安全和扩展考虑,这个 IP 可能是一个动态更新的 IP 列表,并在 IP 不可用情况下通过域名访问。

 

2. 服务器合理部署
服务器多运营商多地部署,一般至少含三大运营商、南中北三地部署。

 

配合上面说到的动态 IP 列表,支持优先级,每次根据地域、网络类型等选择最优的服务器 IP 进行连接。

 

对于服务器端还可以调优服务器的 TCP 拥塞窗口大小、重传超时时间(RTO)、最大传输单元(MTU)等。

 

二、获取数据优化策略

1. 连接复用
节省连接建立时间,如开启 keep-alive。

 

对于 Android 来说默认情况下 HttpURLConnection 和 HttpClient 都开启了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影响连接池的 Bug,具体可见: Android HttpURLConnection 及 HttpClient 选择

 

2. 请求合并
即将多个请求合并为一个进行请求,比较常见的就是网页中的 CSS Image Sprites。
如果某个页面内请求过多,也可以考虑做一定的请求合并。

 

3. 减小请求数据大小
(1) 对于 POST 请求,Body 可以做 Gzip 压缩,如日志。

 

(2) 对请求头进行压缩
这个 Http 1.1 不支持,SPDY 及 Http 2.0 支持。
Http 1.1 可以通过服务端对前一个请求的请求头进行缓存,后面相同请求头用 md5 之类的 id 来表示即可。

 

4. CDN 缓存静态资源
缓存常见的图片、JS、CSS 等静态资源。

 

5. 减小返回数据大小
(1) 压缩
一般 API 数据使用 Gzip 压缩,下图是之前测试的 Gzip 压缩前后对比图。
android-http-compare

 

(2) 精简数据格式
如 JSON 代替 XML,WebP 代替其他图片格式,回复 20 查看关于 WebP 的介绍。

 

(3) 对于不同的设备不同网络返回不同的内容
如不同分辨率图片大小。

 

(4) 增量更新
需要数据更新时,可考虑增量更新。如常见的服务端进行 bsdiff,客户端进行 bspatch。

 

(5) 大文件下载
支持断点续传,并缓存 Http Resonse 的 ETag 标识,下次请求时带上,从而确定是否数据改变过,未改变则直接返回 304。

 

6. 数据缓存
缓存获取到的数据,在一定的有效时间内再次请求可以直接从缓存读取数据。

 

关于 Http 缓存规则 Grumoon 在 Volley 源码解析最后杂谈中有详细介绍。

 

三、其他优化手段

这类优化方式在性能优化系列总篇中已经有过完整介绍
1. 预取
包括预连接、预取数据。

 

2. 分优先级、延迟部分请求
将不重要的请求延迟,这样既可以削峰减少并发、又可以和后面类似的请求做合并。

 

3. 多连接
对于较大文件,如大图片、文件下载可考虑多连接。
需要控制请求的最大并发量,毕竟移动端网络受限。

 

四、监控

优化需要通过数据对比才能看出效果,所以监控系统必不可少,通过前后端的数据监控确定调优效果。

 

关注微信公众号 codekk,回复 perf 可查看 性能优化资料汇总
codeKK

相关 [移动 网络 优化] 推荐:

移动端网络优化

- - Trinea
介绍下针对移动端的网络优化,不限于 Android,同样适用于 iOS 和 H5. 这篇文章首发在微信公众号 codekk. 本文为性能优化系列第四篇,目前性能调优专题已完成以下部分:. 性能优化总纲——性能问题及性能调优方式. 性能优化第四篇——移动网络优化. 性能优化第三篇——代码优化. 性能优化第二篇——布局优化.

移动 APP 网络优化概述

- - bang’s blog
一般开发一个 APP,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用AFNetworking/OKHttp这样的网络库,管理好请求线程和队列,再自动做一些数据解析,就结束了. 但对于一些大型 APP,还会想针对网络的一些问题进行进一步优化,包括:. 速度:网络请求的速度怎样能进一步提升.

移动网络下的性能优化之省电篇

- - ITeye资讯频道
随着3G和4G网络的普及,用户使用APP的场景更多地集中在移动网络下. 同时也带来了手机电量消耗更快和网络延迟更高的问题. 想开发出用户体验更好的应用,就需要对移动网络有更深入的了解. 本系列文章分为上下两篇,分别介绍如何开发出更省电和网络延迟更低的移动应用程序. 本篇文章主要介绍移动网络的一些基本工作原理以及降低手机耗电的优化方案.

TCP之网络优化

- - 掘金 后端
上一篇文章我提到了Nagle算法,是为了解决报头大数据小从而导致网络利用率低的问题,这其实会带来新的问题. 除此之外我们一起来看看tcp还会有什么优化策略呢. 本文纯属学习记录,不完善或错误之处若指正将不胜感激. 首先我们先康康Nagle算法. (1)如果包长度达到MSS,则允许发送;. (2)如果该包含有FIN,则允许发送;.

两款最好的网络加速网络优化提速工具

- Choope - 爱软件
很多时候并非是你本身网络带宽影响的问题,而是你的机器并没有让带宽尽情为你服务. 今天小建推荐两款非常给力的网络优化加速软件与其他网络加速器不同,很多网上的付费网络加速服务是通过代理等方式实现提速,而很多童鞋忽略了优化本身的网络环境与系统设置来实现最合理的网络加速. 今天介绍的两款网络优化加速工具都是非常实用的,特别适合于PPPOE方式的ADSL接入优化提速、对于经常使用如电驴、迅雷、BT、网络电视等P2P上传下载方式软件的童鞋来说这两款软件就更加重要咯,它们就是cFosSpeed与ADSL超频奇兵.

KPCB报告:全球社交网络加速向移动网络发展

- everfly - 互联网的那点事
5月11日消息,知名风投公司KPCB日前发布了《移动互联网趋势报告》,该报告通过10大点分析了全球移动互联网发展趋势. 随着智能手机、平板电脑等移动设备的出现,移动互联网这一新兴事物蓬勃发展,移动平台正式进入大众市场. 当然,在这一发展过程中,也会遭遇一些成长的难题,比如营收模式等. 不过无论如何,移动互联网时代正在来临.

携程App的网络性能优化实践

- - 博客园_知识库
  首先介绍一下携程App的网络服务架构. 由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现. 网络通讯属于基础&业务框架层中基础设施的一部分,为App提供统一的网络服务:. Native端的网络服务.   Native模块是携程的核心业务模块(酒店、机票、火车票、攻略等),Native模块的网络服务主要通过TCP连接实现,而非常见的Restful HTTP API那种HTTP连接,只有少数轻量级服务使用HTTP接口作为补充.

linux 内核参数调整优化网络

- - 神刀安全网
Linux系统内核设置优化tcp网络:. # vi /etc/sysctl.conf,添加以下内容. 默认值:net.ipv4.tcp_syncookies = 0. 表示开启SYN Cookies. 当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击. 默认值:net.ipv4.tcp_tw_reuse = 0.

Blockboard:为邻居们打造的移动社交网络

- Jeff - 36氪
邻居可能不是你的朋友,但也不是陌生人,有时,你有很多事情需要跟他们处理. 在CrunchUP大会上,联合创始人Stephen Hood演示了他们的Blockboard应用(演示视频在下面). Blockboard可以说是一个专为邻居们打造的社区,或者像LiuCC所说,它是一个社邻网络. 通过Blockboard,你可以直接向整个城市报告哪里有水坑、哪里有涂鸦,哪里经常有犯罪等,你可以向邻居问问题,可以贴图寻找失物,也可以告诉别人你捡到了什么东西.

Motorola Droid 4 现踪迹,将支持 LTE 移动网络?

- Woooon - Engadget 中国版
我们还惊讶怎么 Motorola Droid 3 会少了 Verizon LTE 的标示在它机背上,不过看来拥有侧向滑盖 QWERTY 键盘又具备 4G 的版本,应该三个月后就会现身了. 由 Droid-Life 所取得的图片中可以看到,这部手机已经隆重介绍自己是第四代的 Droid. 除了超薄的机身外,机身曲线与 RAZR 有些神似,逐渐细小的边缘也有 Droid Bionic 的几分味道.