您的位置:首页 > 理论基础 > 计算机网络

浅谈移动端网络优化

2015-12-30 21:42 411 查看

浅谈移动端网络优化

本文不仅针对Android,也适用于Ios,Html5等移动开发,一个网络请求包括简单的服务器连接,获取后台数据两部分,连接服务器前还需要DNS解析,获取数据后可能对数据进行缓存等。
一、连接服务器优化
1.不用域名,直接用IP。其实这个方法在实践开发项目中已经这样做了,通常实际开发中会给每个IP取一个唯一的名字,使用时直接通过名字调用这个IP地址。其实这样省去了域名解析的步骤,同时可以预防域名劫持等带来的风险。当然为了安全和扩展考虑,这个IP可能是一个动态更新的IP列表,并在IP不可用情况可以通过域名访问。
2.服务器合理部署。服务器多运营商多地部署,一般至少包含三大运营商,南中北三地部署。配合上面所说的IP动态列表,支持优先级,每次根据地域、网络类型等选择最优的服务器IP进行连接。同时服务器还可以优化TCP拥塞窗口大小,重传超时时间(RTO)、最大传输单元(MTU)等。
二、获取数据优化
1.连接复用。节省连接建立时间,如开启keep-alive.
对于android2.2以后来说默认情况下HttpURLConnection和HttpClient都开启了keep-alive。
2.请求合并
即将多个网络请求合并为一个,比较常见的就是网页中的CSS Image Sprites,如果某个页面内请求过多,也可以考虑做适当的请求合并。
3.减小请求数据大小
(1)对于POST请求,Body可以做Gzip压缩。
(2)对请求头进行压缩。这个对HTTP1.1不支持,SPDY及HTTP2.0支持。HTTP1.1可以通过服务端对前一个请求头进行缓存,后面相同请求头用md5之类的id来表示即可。
4.CDN缓存静态资源
缓存常见的图片、JS、CSS等静态资源。
5.减小返回数据大小
(1)压缩。一般API数据使用Gzip压缩。
(2)使用精简数据格式
实际项目中用的比较多的JSON数据格式,用JSON代替XML等
(3)对于不同的设备不同网络返回不同的数据,如不同分辨率的图片大小。
(4)增量更新。需要数据更新时,可以考虑增量更新。如常见的服务器端进行bsdiff,客服端进行bspatch.
(5)大文件下载。支持断点续传,并缓存HTTP Resonse的ETag标识,下次请求时带上,从而确定是否数据改变过,未改变则直接返回304.
(6)数据缓存。这个在实际项目中常常用到,缓存获取到的数据,在一定的有效时间内再次请求可以直接从缓存读取数据。这个可以仔细研究一下Volley源码,里面有很多这样的处理。
三、其他优化
1.预取。包括预连接、预取数据。
2.分优先级、延迟部分请求。将不重要的请求延迟,这样既可以削峰减少并发,又可以和后面类似的请求合并。
3.多连接。对于较大文件,如大图片、文件下载可以考虑多连接,需要控制请求的最大并发量,毕竟移动端网络受限。
4.监控。优化需要通过数据对比才能看出效果,所以监控系统必不可少,可以前后端的数据监控确定调优效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: