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

做者:王军鹏
野狗iOS资深工程师,国内第一批iOS开发者,曾在人人担任高级工程师。多年逆向工程开发经验,对iOS系统底层有深刻了解。缓存

野狗官博:https://blog.wilddog.com/
野狗官网:https://www.wilddog.com/
公众订阅号:wilddogbaas服务器

图片描述

上篇文章咱们分析了移动网络耗电较高的缘由,并给出了相应的解决方案。本篇文章咱们将分析移动网络延迟较高的缘由,并给出相应的优化方案。网络

移动网络延迟高的缘由

唤醒延迟

在移动网络下,手机要接入网络,必须先向控制平台发送申请。只有当控制平台将手机切换到Active状态,手机才能进行通讯,这一过程在3G网络下消耗的时间通常在500-2500ms之间,咱们称之为唤醒延迟。这是一个形成移动网络延迟的缘由。性能

HTTP延迟

在APP开发中,咱们会常常用到HTTP协议,HTTP延迟就是在使用这个协议时产生的。优化

图片描述

pasted-image一个HTTP请求从客户端发送到服务端的过程当中,须要进行域名查询,这时客户端就会发起一个DNS Query。这个过程所需的时间和ISP(互联网服务供应商)、请求页面知名度、是否存在缓存以及服务器的响应时间都有关系。客户端在拿到解析出的IP后,还要通过咱们熟知的TCP三次握手,这个过程须要耗时几百毫秒,甚至可能达到几秒。TCP握手完成后,还需发送HTTP请求传递咱们的参数,取得服务器返回的数据。若是是HTTPS协议的话还须要进行TLS握手,这就又要增长两轮的延迟等待。spa

全部的这些都须要消耗时间,再加上RRC控制平台唤醒手机到Active状态所要消耗的时间,造成如下3G网络和4G网络的对比图。视频

图片描述

从表中咱们能够看到:在没有计算服务器反应时间的状况下,3G网络下一条HTTP请求须要600-3500ms,4G网络下大概也须要0.5s。blog

核心网络延迟

下图是在移动网络下,一个手机向服务器传输数据的完整过程。图片

图片描述

首先,手机须要切换到Active状态才能正常通讯。手机向无线接入网络发送一条通讯请求,无线接入网络收到后,给手机分配通讯资源。这一步骤在3G网络最多须要花费2s,手机切换到Active状态后,开始向无线接入网络传输数据,基站无线接入网络收到后把数据发送给服务网关,服务网关将数据传给数据网关,数据网关再传输给服务器。资源

咱们再看看服务器收到数据后给手机返回数据的通讯过程,如图所示:

图片描述

服务器将数据传给数据网关,数据网关把数据交给服务网关,这时服务网关并不知道这设备在哪,只有把这个任务交给无线接入网络,无线接入网络找到设备后将手机切换到Active状态准备接受数据,而后告诉服务网关能够发送数据了,服务网关收到指令后将数据交给无线接入网络,无线接入网络再将数据发给手机。这样一次通讯才算是最终完成。

咱们只想完成一次请求,而在这传输过程当中咱们却不得不忍受各类各样的延迟,包括路由选择延迟、唤醒延迟、控制平台延迟、骨干网络延迟、用户平台延迟等。

如何下降延迟

提早唤醒

若是对速度要求很高,咱们能够提早唤醒手机,并使其一直处于唤醒状态,固然这是以损耗电池为代价的。另外从用户体验上来讲,对于超过2s的请求都应该给一个进度状态。

数据缓存

最快的请求就是不请求。网络通讯的延迟是不能够避免的,可是对于已经请求过的数据请务必缓存下来,在下次再次访问时直接从本地获取。这样不只能让用户有更流畅的操做,即便是在断网的状况下也能使用APP。

压缩资源

GZIP压缩资源。GZIP压缩通常对纯文本内容可压缩到原大小的40%,这样能够有效减小服务器带宽占用,提升咱们咱们的请求速度。

使用WebP图片格式

使用合适的图片格式。通常图片资源至少占整个APP数据量的50%以上,因此压缩图片大小对提升性能也是很是重要的。这里推荐使用WebP图片格式,在质量相同的状况下,WebP格式图片的体积要比JPEG格式图片小40%。

使用不一样策略

如今2G,3G,4G网络并存,网络速度差距也很大,针对每种网络应该有不一样的应对策略。好比2G网络不自动打开图片,3G,4G网络询问是否播放视频等。

使用CDN

在全国各地多布设CDN加速节点,特别是网络流量比较大的区域,也能有效缓解核心网络所带来的延迟。

相关文章
相关标签/搜索