[发明专利]iOS网络请求拦截转发缓存方法及系统在审
申请号: | 201710529149.2 | 申请日: | 2017-07-01 |
公开(公告)号: | CN107332843A | 公开(公告)日: | 2017-11-07 |
发明(设计)人: | 刘小岳;王玲;王敏君 | 申请(专利权)人: | 华泰证券股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08;G06F17/30 |
代理公司: | 南京众联专利代理有限公司32206 | 代理人: | 顾进,叶涓涓 |
地址: | 210000 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ios 网络 请求 拦截 转发 缓存 方法 系统 | ||
技术领域
本发明属于互联网技术领域,涉及一种基于NSURLProtocol的iOS网络请求转发缓存方法及系统。
背景技术
随着互联网技术的快速发展,绝大部分应用系统都离不开与服务器交互,这就必须要用到网络请求。目前iOS应用程序基于HTTP发送网络请求,现有的iOS应用程序主要采用Hybrid架构,H5页面只可以使用Ajax发送HTTP网络请求基于该方式,应用程序发起每次请求时都得建立三次握手,每次握手大概消耗250ms。而且当使用HTTPS时,建立连接的耗时将会加倍。另一方面,若不对网络请求进行缓存,则必须每次都向服务器请求数据,既浪费时间也会增加服务器的响应压力。因此,现有的方式运行速度慢,效率低下,也给服务器造成了不小的压力。
发明内容
为了解决上述问题,本发明提出基于NSURLProtocol的iOS网络请求拦截转发缓存方法及系统,底层使用比HTTP更轻量级的TCP协议建立应用程序和服务器端的长连接,优化H5页面与服务器的交互;同时采用自定义缓存机制缓存请求响应数据,消除不必要的网络请求,减轻服务器的响应压力。
为了达到上述目的,本发明提供如下技术方案:
iOS网络请求拦截转发缓存系统,包括网络请求发送模块、网络请求拦截模块、网络请求转发模块、自定义网络请求缓存模块;
所述网络请求发送模块使用iOS系统中的NSURLSession及相关类发送网络请求;
所述网络请求拦截模块使用NSURLProtocol拦截相关的网络请求,当请求未被拦截过时转发模块会接收转发模块响应的数据,将其通过缓存模块缓存后转发给网络请求发送模块;当请求已经被拦截过,不再将请求交给底层转发,直接从自定义网络请求缓存模块中获取相应的应答数据并发送给给网络请求发送模块;
所述网络请求转发模块用于在底层使用TCP协议将拦截的请求转发给服务器并接收服务器返回的数据;
所述自定义网络请求缓存模块用于缓存拦截的网络请求及其应答数据。
进一步的,所述网络请求拦截模块根据URL的scheme和特定的字符串形式进行拦截。
进一步的,所述网络请求转发模块使用TCP与服务器建立长连接。
进一步的,所述自定义网络请求缓存模块为磁盘缓存,采用文件存储和SQLite数据库相结合的方式实现数据的读取和写入;
所述文件存储和SQLite数据库相结合的方式包括:
当单次存取的数据较小时,采用SQLite数据库进行存储;当单次存取的数据较大时,采用文件存储进行存储。
进一步的,所述自定义网络请求缓存模块缓存时自定义网络请求缓存模块判断其存储的缓存数据大小是否超出定义的阈值,若超出,则按存储的时间数据,递归删除最旧的数据,直至其缓存大小小于其阈值;若没有超出,则直接结束存储过程。
iOS网络请求拦截转发缓存方法,包括如下步骤:
步骤一,用户通过网络请求发送模块使用NSURLSession及相关类发起网络请求;
步骤二,网络请求拦截模块使用NSURLProtocol拦截相关网络请求;
步骤三,拦截到网络请求后,网络请求拦截模块从请求中解析出是否需要更新缓存中数据的标识;若不需要更新缓存数据,自定义网络请求缓存模块会继续判断该请求是否被缓存,自定义缓存模块从拦截模块接收数据后以请求的url、参数及其对应参数值构成的字符串作为key,查找是否有缓存存在,若没有缓存,则跳至第四步,反之则跳至第六步;若需要更新缓存,则跳至第四步;
步骤四,系统将请求通过底层TCP网络请求转发模块转发给服务器;
步骤五,网络请求拦截模块接收底层转发模块响应的数据,调用自定义网络请求缓存模块以请求的url、参数及其对应参数值构成的字符串作为key,以响应的数据作为value进行缓存,并发送给网络请求发送模块;流程结束不执行步骤六;
步骤六,网络请求拦截模块跳过底层请求转发模块,直接从自定义网络请求缓存模块中获取相应的应答数据并发送给给网络请求发送模块。
进一步的,所述步骤二中网络请求拦截模块根据请求的scheme和特定的字符串形式进行拦截。
进一步的,所述步骤四中所述网络请求转发模块使用TCP与服务器建立长连接。
进一步的,所述自定义网络请求缓存模块采用文件存储和SQLite数据库相结合的方式实现数据的读取和写入;
所述文件存储和SQLite数据库相结合的方式包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华泰证券股份有限公司,未经华泰证券股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710529149.2/2.html,转载请声明来源钻瓜专利网。