前言

说到APP优化,咱们也能够从很多方面进行优化,从包大小、页面晦涩度、内存占用、数据缓存、网络数据安全等等来优化加固咱们的APP,每一个点开展又有很多须要将的,我以前也专门写了一篇对于APP性能优化的博文,如下:
《iOS-性能优化的那些事》
在挪动端APP网络优化也是APP性能优化的一个十分重要的一个点,而且99.99%的APP都会随同着网络交互;
在此,我将对APP网络优化和网络安全做一个具体的总结,次要从流量、品质、平安方面去说,如要构造点如下:

流量耗费

先说一个亲身经历过得事件,以前在一家公司开发了一款APP,有一点客服反馈有个上海老大爷打电话过去骂人,手机装了咱们的APP,一个早晨用掉人家一两个G;起初公司也被动帮人家承当了这部分的流量资费,要害是15年流量资费还很高的,这个APP当然不是我写的,是安卓的小伙伴!

即便流量当初价格不是很贵了,然而尽可能的帮用户节俭漂泊也是十分应该的!

检测流量耗费

置信大家在开发APP的时候必定会做一些埋点和日志上报的性能,咱们也能够把网络申请的监控也做进去,咱们能够检测用户在一段时间内的流量耗费,计算流量的均值和峰值等等,并上报流量接口,这些咱们在日志或者埋点零碎外面都能够记录,而后上传给服务端,而后进行数据分析,找出流量耗费的不足之处。

数据缓存

说到缓存,这也是一个十分大的一个点,有工夫也能够开展说,我平时的博客对于缓存也讲到很多,缓存的一个十分重要的益处就是提好了页面加载速度,进步用户的应用体验;然而缓存也能够替用户节俭流量的耗费。
APP数据的缓存无非是列表接口的缓存、WebView的缓存,对于WebView的缓存我也独自写过,如下:
《iOS-WKWebView缓存并保障实时性》
《iOS-UIWebView缓存并保障实时性》
咱们还能够做资源包下发预制加载等,这里也不开展了!

数据压缩

对于数据压缩,这边次要想讲的就是资源文件的数据压缩了,次要在网络上传和网络下载方面;

1.数据上传
比方上传图片数据的时候是不是须要原图高清图,当初相机的像素都高,咱们是不是能够搞了压缩一下图片或者视频再上传,就像微信发送图片的时候,用户能够抉择压缩或者原图;

2.数据下载
下载目前也是APP的大头了,个别APP都是申请下载的数据比拟多;咱们在加载资源的时候能够抉择加载压缩资源,比方微信的朋友圈,小图的时候咱们能够加载缩略图,要是点击查看大图的时候才思考加载大图原图;

交互频率

数据交互如果比拟频繁会耗费用户的流量,而且用户体验不好,还有一个十分重要的起因就是频繁的网络申请也会比拟损耗手机的电量;所以咱们能够合并一些能合并的网络申请,比方日志上报的时候。

申请开释

在APP开发的过程中,个别就是一进入页面就进行网络申请,而后期待完结加载数据,然而比方网络申请比拟迟缓(可能是数据量比拟大,也有可能是网络情况不好),用户不想等了,间接返回页面销毁了,然而咱们的大部分网络申请是独自封装的,然而网络申请还在持续申请中,这里数据、性能、内存、电量的问题就进去了,所以大家在封装网络申请的时候要把页面销毁就勾销网络申请的场景思考进去!

网络品质

申请速度

网络申请的速度是影响用户体验的一个十分重要的起因,所以服务端也要想着来进步api的交互速度,为此咱们能够通过上面的几个计划来优化交互速度,如下:
a.域名合并,缩小了DNS调用次数,升高了DNS劫持危险;
b.ip直连,去除DNS的解析步骤;
c.api缓存,比方redis缓存;
d.数据资源压缩上传;

申请品质

监控网络申请品质和申请速度,而后记录日志进行上报,监控残缺的网络申请链路;

服务器压力

api的设计也要思考到api的压力以及服务器的压力,避免因为压力太大导致接口挂掉,从而影响用户的体验;

数据处理

服务端在给APP端提供数据的时候,防止让APP端进行数据处理或者运算,比拟APP的内存资源和运算资源无限,不要适度耗费节约APP资源;
比方,我上家公司的用户信息外面有用户的年龄,然而服务端给的不是间接的年龄数据,而是给的生日工夫戳,须要APP端本人去计算年龄,然而咱们晓得
NSDateFormatter又是重大内存开销对象,在列表解决的时候又比拟耗费内存,所以倡议对于运算的一些货色最好在服务端计算好,这种不仅仅保障APP的性能问题,还是一种平安问题!

网络安全

咱们在APP端的网络安全问题个别是APP抓包、DNS劫持、服务器平安,具体如下:

APP抓包

说到抓包,侵入者能够抉择抓取数据来窃密APP的要害数据,而后模仿申请,做一些APP不好管制的事件,在此咱们能够应用Https进行网络申请,还能够禁止网络申请设置代码;
还能够把申请头和申请体进行加密传输,多一次保障!
然而须要阐明一点的是,没用相对的平安,只有是人设计的加密就有人设计解密,窥视心里在作怪!

DNS劫持

DNS劫持,因为域名解析为IP这个过程中,其解析是基于UDP 协定实现,所以报文是明文状态,可能会在申请过程中被监测,而后攻击者做一些本人的解决,比方返回假的IP地址或者什么都不做使申请失去响应,其成果就是对特定的网络不能反馈或拜访的是假网址。根本原因就是以下两点:
a.歹意攻打,拦挡运营商的解析过程,把本人的非法货色嵌入其中。
b.运营商为了利益或者一些其余的因素,容许一些第三方在本人的链接里打打广告之类的。
如何避免DNS劫持?
能够通过下面我说的IP直连,本人在APP解析!
举荐一篇写的比拟具体的对于DNS的,如下:
《APP网络优化之DNS优化实际》

服务器平安

服务器平安能够从物理平安和网络安全来说
a.物理平安,服务器要思考比方断电、断网等状况下导致的平安问题;
b.网络安全,避免服务器被攻打、被爬虫等问题;
所以,服务器的备份机制和数据备份机制和重要,还要限度同一IP的申请次数和距离等;

结束语

如有不足之处还望各位大佬不吝赐教,也欢送大家加群或者叫我QQ探讨交流学习!