APP下载

移动App性能优化

2021-07-03李想张玉军余瑾杨维昊

电子测试 2021年10期
关键词:开发者增量监控

李想,张玉军,余瑾,杨维昊

(辽宁科技大学计算机与软件工程学院,辽宁鞍山,114004)

0 引言

App的飞速发展,使得它们已经成为了每个人方便生活的必备品。现在用户追寻的不再是技术与功能。因为现在目前市面上所有的App可以满足大部分人大部分的需求,对于用户体验是目前大部分人关注的,一个App的体验直接影响到了用户的转化率。影响用户体验的因素有很多,主要体现在页面设计,加载速度等方面。通过相关文档以及前人的研究,总结他们提出的问题,关于gzip压缩工具的使用以及控制不同大小类型图片的请求与渲染,因为图片加载占了我们大部分的时间。在这些基础上做了研究,又从用户角度对CDN的使用以及用户图片上传canvas图片压缩等方式进行了总结研究。

1 CDN的研究

1.1 为什么优化CDN

所谓的CDN就是内容分发网络,目前很多比较大的公司都会使用这种CDN,它的一个主要优点是,它可以替用户选择一个离它最近的节点,并且获取它一个最优化的内容,这样可以大大提升网站的性能。但是CDN有一个主要的问题,如果CDN它使用缓存直接设置了10年,并且直接使用这个文件名作为索引,这样后端如果更新了文件内容的话,如果文件名字一直没有变化的话,可能这个CDN一直在10年之内都是使用的是同一份资源,除非说互联网服务虚拟经济强制的推送。这时候我需要一个机制,如果我们内容变化的时候,用户可以立马感知的,并且及时的刷新缓存。

1.2 如何优化CDN

有些人会忽略CDN对于手机的效果,而且CDN在手机端的做法有点不太一样,做了CDN合并压缩,还有动静分离之后的,效果会差很多,动静分离对手机APP的效果比较明显,因为用户拿着手机,不像在PC,PC端用户习惯比较单一,比如说大部分用户是家里公司,比较单一,但是手机带着到处跑,到处跑的话CDN的效果更加凸显一些。特别是用户数多的App。CDN可以帮助整个网站的性能有质的变化。对于CDN的状况,connect的状态,差异会非常大。Request和Response,都有很大幅度的一个提升,对于海外的用户访问体验也有一个质的变化。如果大家公司APP需要在海外出差要用的话,海外CDN的效果还是非常明显。

对于CDN的质量监控,有很多人做优化有很多点,做完之后都没用任何方式去验证它的过程,也没有一个方式去做持续的改进,所以说这个监控非常重要。对做的任何优化点都要有监控,帮助长期的规范这样一个过程去优化。

2 资源控制与优化

对于不同的网络在编码的时候要考虑一下,要想一下系统的配置最终会有多大,而且要做一些限制和做一些规范,不能无止境的让业务无限增长,如果配置无限的膨胀,这样再怎么做再怎么优化也达不到想要的效果,所以资源量控制是非常严格的,它的一个上下行的速度范围是有限的。要保证在不同网络下都能达到一个比较好的效果,要做一个权衡。通过专业监控的数据然后反推出来用户的实际用户访问下载的一个速度。通过测试和查阅在不同的城市这个速度也是差距很大的,这个对做APP优化有参考价值。

第一个就是增量,对APP来说增量是很重要的,用户不可能每次都要更新新发布的APP,一个公司如果发展很好的话一个月有三四次更新是很正常的,做快速敏捷开发每个月都会有产出,业务肯定希望还是越早的给用户看到更好。这时候对于需要的增量,增量有些公司可能是按业务型切分,这个增量是到业务的,有些是做到文件的,做到好的优秀的可以做到一行代码做增量,这样就会很小,用户实际的下载量就会控制下来,优化APP也要对这个增量分发有个很好的一个控制,不控制好,用户下APP要花好久好久才能下载,如果一个APP上百兆了,基本上看看就过了,都没有兴趣去下一个APP,这部分一定要注意好,增量的机制对客户来说最好是无感知的情况下把增量下载下来,增量基本上感觉不到的,还是在后台默默地帮你去打补丁,增量最重要就是你要解决跟下载速度的依赖关系,才能达到想要的一个效果。

3 延时优化

延时也是非常重要的部分,基本上通过延时带宽就能知道用户多久才能看到这个页面,对于用户来说什么时候页面加载出来就意味着转化率最终会达到一个什么样的效果,因为毕竟只有页面转化了才能达到一定的收益,公司业务才会达成。

知道这些以后做一些优化,比如APP里面有很多酒店图片,可以为不同的网络准备不同分辨率的图片,根据用户的状况来决定到底显示什么。如果发现网络质量不好的话,通过设计的一些机制,可以往下显示清晰度不那么高的图片给到客户,这样保证用户游览速度没有问题的情况下,尽可能给他更清晰的图片。也可以对不同设备的用户分配最适分辨率的图片,对于图片资源CDN请求服务系统图如图1所示。

图1 图片资源CDN请求服务系统图

因为目前上行带宽永远小于下行带宽,这个在国内非常明显一点,包括用wifi也是,wifi网络其实并不那么快,如果用手机直接拍出来的,或者单反拍出来的一张照片非常大,特别是用户有时会上传一排的照片,非常多,用户一下子上传十几张二十几张照片的时候要传好久,实际上二十几张照片有100多兆的东西,对于下行的带宽,手机也是,手机传更慢,这样考虑先压缩再后传,这一点APP已经给提出很好的解决方案。APP上做了,然而H5大部分开发者是没有设计的。H5也是要做的,手机APP上,首先判断到用户是手机访问的,用canvas可以去缩放图片,可以去从新定义它图片的质量,这样减轻了传输负担,在合理的控制下,用户丝毫感觉不到图片被压缩了,用户只是感觉到了上传速度变快了,这对于服务器和用户体验都是不小的优化。

4 传输优化

对于传输的方式优化,现在用的稳定可靠整体收益比较好的就是Protocol Buffer加上gzip的一个组合,抛弃了以前的json和gzip的组合。这样数据会非常小,可以节省很多带宽。通过做了一些测试,基本上是原先三分之一的大小,如果用json的话还要比它大三倍,这样对用户来说流量消化非常大,protocol buffer加上Gzip这样一个组合是不错的。

5 结语

APP的监控是非常必要的,如果想提高性能,监控必须得做,否则没有办法知道用户真实的感受,开发者用手机看的效果跟用户看出来效果差很多,用户根本不在开发者网络环境下,可能不在开发者本地,甚至在海外,看的效果完全不一样。所以监控非常重要。然后分析痛点,分析痛点很多人喜欢用工具看,这个看不出来,一定要连真机,连安卓等看看,毕竟开发者网页上模拟的,跟手机上也差很多。

然后是对于性能AB测试,现在做得人比较少,如果公司有APP框架的话,可以做一些性能AB测试,本地用着快,不代表用户真的用得快,因为有不同的网络环境的差异,用户的一个具体位置,或者是用户的使用习惯的差异,会导致优化效果并不是那么明显。对于开发者优化性能并不是看提高多少秒,最终看转化率提高多少,跟业务的测试是一样。如果你只是看页面性能提高了,转化率低下去了这个没有意义的。

猜你喜欢

开发者增量监控
提质和增量之间的“辩证”
The Great Barrier Reef shows coral comeback
“价增量减”型应用题点拨
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
“85后”高学历男性成为APP开发新生主力军
基于均衡增量近邻查询的位置隐私保护方法
16%游戏开发者看好VR
栝楼产业开发者谢献忠
PDCA循环法在多重耐药菌感染监控中的应用