移动端的http请求已经成为app必不可少的数据获取方式,但大多数网络请求模块主要焦点放在功能上,较少考虑到时间、空间等性能指标,时间主要是指请求时间,包括tcp建链的时间,数据传输时间,数据返回后处理或存储时间,空间主要指内存空间,主要是内存碎片及内存可用空间越来越小等问题。针对以上问题其实都是有解决办法的。
首先针对时间性能指标,应该使用多线程多连接并发复用技术,涉及到线程池技术、tcp连接复用技术,在线程池中对任务队列中的任务进行并发处理,同时tcp连接要采用复用技术,这样将大大减少请求时延,对大多数据http请求而言,tcp建连的时延远比数据传输时延要高,tcp连接复用技术可以大大减少http请求时间,达到提升时间性能指标的目的。同时采用多线程技术,支持并发,这样又可以增加客户端任务的并发,提升逻辑及界面的响应体验,同时减少服务器并发压力。反过来讲,如果不使用连接复用技术,对于服务器而言,压力在于建连,并发能力不变情况下,能够同时提供服务的用户数量必然受影响,因为进行n个请求,需要服务器分配n个sock资源,而采用复用连接技术,在并发能力不变的情况下,能够提供给更多的用户服务。对于复用的tcp连接,要有管理策略,即空闲策略,超过一定时长,自动释放该连接。现有的一些较知名软件,如微信、飞信在资源下载上都使用的是此技术。对于ios平台,ASI