从用户的角度分析,我们优化的目标就是,如何实现以最少流量,最少电量,最少内存以及最快速度获取到服务端数据。
(一)最少流量
花费的流量主要有两个方面影响:用户的网络请求次数少,发送的数据尽可能少
优化方案:
1. 对于同时多个页面发起相同的网络的请求,可以进行请求合并,等一个请求回来再分发给不同的页面,以及同一个页面最好不要有多个不同的请求,有的话尽可能想办法合并,这样既可以减少网络请求的次数,还可以减少发送的数据,以达到减少用户的流量;
2. 对发送的网络请求的数据以及服务端返回的数据进行压缩,特别是日志等大文件上传,但是这样本地解析数据展示时花费的时间要多一点;
3. 对于图片,日志等大文件上传下载,最好实现断点续传,避免重新上传已经发送过的流量,还有可以选择在用户在wifi的情况下,才选择上传日志这种优先级比较低的网络
请求,节省用户的移动流量;
4. 采取比较轻量级的协议,比如谷歌的proto协议代替json,xml。
(二)最少时间,内存
时间上的花费影响的因素比较多,我们从网络请求的步骤来分析,从本质上来看,手机客户端网络请求的大体步骤如下:客户端包装网络请求的数据,连接服务器-->>获取服
务器的数据,客户端收到返回的数据解析展示;
1. 客户端包装网络请求的优化:
包装数据花费的时间尽可能最短,涉及到打包的算法尽可能的优化,对于频繁请求的相同请求可以适当缓存它的请求包,以避免频繁创建,但同时会占用客户端更多的内存,
这个可以针对特定的业务来使用;
客户端发起请求的连接使用单例模式复用,避免频繁创建链接,既节省时间,有节省内存;
2.连接服务器的优化:
不使用域名,直接使用ip连接,这样省去了域名解析的时间,同时避免域名被劫持的风险,不过为了稳定性,安全性的考虑,可以在本地维持个接入ip列表,当一个ip不可以
用时可以采用其他ip连接;
服务器的合理部署也很重要,移动,电信,联通三大线路布局,移动用户访问时优先选择移动线路连接,还有地区北中南的地区的布局,结合以上的ip列表,这样可以动态根
据不同地区,类型的用户选择最优的路线去连接,减少连接时间;对于图片下载,可以部署cdn缓存图片资源,提高下载速度;
3. 获取服务器数据时间优化
缓存一些服务器返回的数据,这样请求远端服务器的数据还没回来之前,可以马上显示本地缓存的数据;
预加载可以使用空闲时间来预先下载/加载用户接下来很可能会浏览的资源,在高延迟的网络环境下,内容预加载可以减少用户的等待时间。比如在网络连接不好的情况下,
客户端会在应用启动时加载基础数据。使用预加载内容方案时要注意不要让后台网络请求阻塞正常的网络请求,可以使用了一个优先队列来存储请求;
对于上传图片的业务可以使用多连接并发上传,减少用户的等待时间;
如果是socket连接,尽可能优化解包算法,减少解包时间
(三)最少电量
当然电量这个受到时间和流量的影响,速度越快,流量越少证明花费的电量就越少,还有一点需要注意的是,当用户退出当前页面或者退出应用时,应该取消当前页面相关的
网络请求,避免发送没必要的网络请求,浪费手机资源。