前言
- App优化 - 需要优化哪些?
- App优化 - 性能分析工具
- App的3种启动方式
- App优化 - App启动速度优化
- App优化 - 布局优化
- App优化 - 消除卡顿优化
- App优化 - ANR优化
- App优化 - 电池省着用
- App优化 - 网络优化
1. 概述
随着时代的推移、社会的进步、互联网的发展,我们移动端app的功能越来越强大、越来越美观,那么这些所谓美观的数据、给用户视觉上的美观效果、给用户好的享受等等等等,都离不开移动app与服务器进行交互、进行联网请求,所以说网络连接对于用户体验来讲至关重要,那么接下来我们就正式的进入我们今天的主题 - 网络优化。
2. 联网请求对用户的影响
App的联网请求对用户来说还是有一些影响的,下边说下比较重要的几点:
流量
频繁的请求网络导致会很耗费流量,造成用户不好的体验;
电量
频繁的请求网络可能也会比较耗费电量,造成用户不好的体验;
用户等待
如果联网请求时间比较长,让用户等待时间比较长,让用户觉得界面卡顿、反应迟钝造成用户不好的体验
造成服务器压力
频繁的请求网络,可能造成服务器压力;
3. 联网请求优化的2个方面?
减少请求网络的次数
可以减少电量的消耗、减少服务器的压力,必要时可以缓存数据到本地;
减少传输数据的大小
可以减少流量的消耗,可以在网络不是特别好的情况下也有良好的用户体验;
4. 优化联网请求的具体措施
4.1:接口设计
API设计:
客户端与服务器的接口设计要考虑请求网络的次数,目的就是让app以较少的请求次数完成业务需求和界面展示。
这个就涉及到策略问题,客户端和服务器的兄弟可以商量、讨论和交流,考虑如何设计接口可以最大程度上去达到以较少的请求次数完成业务的需求和界面展示。
Gzip压缩:
用Gzip压缩请求和相应,即就是request和response,减少传输的数据量和流量的消耗。
图片的Size:
现在绝大多数的公司图片都是使用第三方云存储服务器的,比如七牛、阿里云存储之类的;
1>:我们在获取图片时,可以告诉服务器需要图片的宽高,让服务器返回合适图片;
2>:以七牛为例,在请求图片时,可以给服务器传递width、height、质量、格式来获取图片资源;
可以参照参考七牛官方文档.
考虑使用Protocol Buffer代替Json:
Protocol Buffer:是谷歌推出的数据交互格式,如果请求数据量比较大,可以考虑使用Protocol Buffer;
4.2:网络缓存
缓存的目的:
1>:让应用看起来更快、避免流量的消耗;
2>:在没网或者网络情况比较差的情况,照样可以给用户展示对应的信息和数据,不至于在没网或者网络情况比较差时,显示空白页面或者界面卡住停滞不前或者一直在转圈等等;
常见做缓存的地方:
Splash闪屏页面、首页需要显示列表数据、用户经常点击的页面
如果在本地这样做了缓存,就可以在很大程度上给用户很好的体验;
4.3:打包网络请求
如果接口不能满足我们的业务需求时,比如一个界面需要请求多个接口,或者网络比较好、WIFI比较好的时候可以去获取更多数据;
4.4:监听相关的状态
休眠状态、充电状态、网络状态
常见做缓存的地方:
Splash闪屏页面、新闻类app首页等等,都可以在WIFI环境时做离线缓存;
4.5:弱网测试和优化
弱网测试:
一般情况下,无法判断弱网,如果有这样的需求,可以去判断网络的类型,2g、3g、4g、WiFi
弱网优化:
在弱网的情况下,去体验我们的App,一般来讲,网络延迟在60ms之内的,是比较ok的,超过200ms就比较糟糕了,而我们自己需要做的就是,在糟糕的环境下,也需要给用户比较好的体验;
弱网优化,本质上就是在弱网的情况下,也需要让用户能够流畅的使用我们App,所以弱网优化就显得尤为重要,具体措施如下:
1>:压缩、较少数据量的传输;
2>:使用缓存,减少请求网络的次数;
3>:针对弱网,不要去加载图片和列表数据;
4>:在界面上,先给用户及时反馈,然后等网络好的情况,再去提交请求;
比如点赞,用户点赞之后,先给用户一个点赞成功的反馈,等网络比较好的时候再去提交请求,这个就是 在界面上,先给用户及时反馈,然后等网络好的情况,再去提交请求。
结语
网络优化对于 app优化,至关重要,个人觉得除了客户端、接口的优化之外,服务端的代码开发、部署方式也是需要优化的,以上就是网络优化的相关内容,哪里写的不对或者什么地方没有考虑周全的方面,麻烦大家提下意见和建议,让我们大家共同完善去 App的优化。