CN117714541A - 基于请求链路拦截的iOS应用网络数据缓存方法、*** - Google Patents
基于请求链路拦截的iOS应用网络数据缓存方法、*** Download PDFInfo
- Publication number
- CN117714541A CN117714541A CN202311749713.3A CN202311749713A CN117714541A CN 117714541 A CN117714541 A CN 117714541A CN 202311749713 A CN202311749713 A CN 202311749713A CN 117714541 A CN117714541 A CN 117714541A
- Authority
- CN
- China
- Prior art keywords
- request
- data
- cache
- link
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 144
- 230000003139 buffering effect Effects 0.000 claims abstract description 9
- 230000000977 initiatory effect Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000010410 layer Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/564—Enhancement of application control based on intercepted application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于请求链路拦截的iOS应用网络数据缓存方法、***。根据iOS应用发起网络请求时创建请求工厂,请求工厂创建网络任务,网络任务创建一请求链路;根据请求链路判断存在请求拦截则暂停当前的请求链路;缓存***对请求数据进行缓存操作;缓存完成后则恢复请求链路,发送网络请求至服务器;在接收到服务器响应后,根据网络任务创建一响应链路;根据响应链路判断存在响应拦截则暂停当前的响应链路;缓存***对响应链路的响应数据进行缓存操作;完成缓存后则恢复当前的响应链路,并将响应数据回调至iOS应用。通过请求链路的拦截实现缓存,缓存的使用和移除不影响网络请求的逻辑,支持多种缓存策略满足不同场景以及网络环境下的缓存。
Description
技术领域
本发明涉及数据缓存技术领域,具体而言,涉及一种基于请求链路拦截的iOS应用网络数据缓存方法、***。
背景技术
在移动应用开发中,网络请求是不可或缺的一部分,而数据的实时性和流畅性直接影响用户体验,网络数据的高效管理变得愈发重要。
NSURLCache是苹果官方提供的缓存技术,用于在iOS应用中管理网络请求的缓存数据。它主要基于响应对象来存储和检索网络请求的响应数据。下面详细介绍NSURLCache的技术方案:NSURLCache以URL为键映射缓存响应对象。缓存响应对象包含了一个网络响应和一个响应数据。当应用程序发起GET网络请求时,NSURLCache会先根据URL检索是否有匹配的缓存响应对象,如果有,就直接返回缓存数据,而不需要再发起网络请求。如果没有缓存响应对象,就发起网络请求,并将响应数据缓存起来。
NSURLCache通过与服务器进行验证来决定是否使用缓存数据,NSURLCache会在使用缓存数据之前向服务器发起请求进行验证,如果服务器返回该数据没有被修改过,则验证通过使用缓存数据,否则从服务器获取最新数据。
目前,包括NSURLCache在内的市场上的iOS应用网络数据缓存方法,实现原理相似,但有如下缺点:与网络请求缓存过期模块捆绑在一起,不能做到缓存模块独立于网络请求模块;控制缓存的粒度较为粗糙,通常是基于整个请求的响应来进行缓存,在一些情况下,可能需要更细粒度的缓存控制,例如对不同请求的缓存数据合法性校验;缓存策略相对简单,缺乏一些高级功能,无法实现多样化的自定义缓存策略,如复杂的缓存过期策略、多级缓存等,无法灵活适应各种应用场景;复杂的缓存过期和管理需求,可能需要额外的自定义逻辑,在一些网络缓存场景下可能不够灵活;仅支持GET网络请求的缓存。
发明内容
有鉴于此,本发明实施例的目的在于提供一种种基于请求链路拦截的数据缓存方案,通过链路拦截,开发者能够更加灵活、全面地掌控整个网络请求过程,为应用提供了更多定制化和优化的可能性,使得网络请求的管理和处理更加高效、安全、可靠。
本发明的第一方面提供了一种基于请求链路拦截的iOS应用网络数据缓存方法,所述方法包括:
根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;
缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;
缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
进一步,根据所述请求链路判断是否存在请求拦截,包括:根据所述响应链路判断是否存在响应拦截,包括:所述响应链路通过循环遍历***组,判断是否存在响应拦截。
进一步,所述缓存***对所述请求数据进行缓存操作,包括一级内存缓存、二级磁盘缓存、以及网络请求和更新步骤;
所述一级内存缓存步骤,包括:将从网络获取的数据先存储在内存中,使用字典或其他内存数据结构来保存;在请求数据之前,首先检查内存缓存中是否已经存在相应的数据,如果存在,直接从内存中获取;
所述二级磁盘缓存步骤,包括:如果内存缓存中不存在需要的数据,再去检查磁盘缓存;磁盘缓存使用文件***或数据库来实现;如果磁盘缓存中有相应数据,从磁盘中读取并同时存储到内存缓存中,以备将来的快速访问;
所述网络请求和更新步骤,包括:如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
所述网络请求和更新步骤,包括:如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
进一步,所述缓存***对所述请求数据进行缓存操作,还包括:
基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
进一步,所述缓存***对所述响应链路的响应数据进行缓存操作,包括:
根据自定义配置合法数据的数据结构,当接收到所述服务器的响应数据且有缓存需求时,所述缓存***根据响应对象获取基础路径地址,以基础路径地址为key,映射找出对应的合法数据数据结构,如果数据合法,执行缓存操作。
进一步,所述方法还包括:每次iOS应用启动时,根据默认有效期或自定义配置的有效期,检查本地数据库已过期数据并删除。
此外,本发明的第二方面提供了一种基于请求链路拦截的iOS应用网络数据缓存***,所述***包括创建模块、第一判断与拦截模块、第二判断与拦截模块,其特征在于:
创建模块,用于根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
第一判断与拦截模块,用于在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;基于缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
第二判断与拦截模块,在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
进一步,所述缓存***对所述请求数据进行缓存操作,还包括:基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
此外,本发明的第三方面提供了一种电子装置,所述电子装置包括:一个或多个处理器,存储器,所述存储器用于存储一个或多个计算机程序;其特征在于,所述计算机程序被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
此外,本发明的第四方面提供了一种存储介质,所述存储介质存储有计算机程序;所述程序由处理器加载并执行以实现如上所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
本发明的方案中,通过根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。通过通过请求链路的拦截实现缓存的功能,缓存的使用和移除不影响网络请求的逻辑,不影响应用的整体结构,增加应用的灵活性,且支持多种缓存策略适应于不同场景下的缓存策略配置,从而满足不同场景以及网络环境下的缓存控制。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例公开的基于请求链路拦截的iOS应用网络数据缓存方法的流程示意图;
图2是本发明实施例公开的多缓存策略集合图;
图3是本发明实施例公开的双层缓存流程图;
图4是本发明实施例公开的请求链路缓存拦截时序图;
图5是本发明实施例公开的基于请求链路拦截的iOS应用网络数据缓存***结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本实施例的术语名词解释:
iOS:由苹果公司开发的移动操作***;苹果公司最早于2007年1月9日的Macworld大会上公布这个***,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上;iOS与苹果的macOS操作***一样,属于类Unix的商业操作***;原本这个***名为iPhoneOS,因为iPad、iPhone、iPod touch都使用iPhone OS,所以2010年苹果全球开发者大会上宣布改名为iOS。
URL:URL代表的是"Uniform Resource Locator"(统一资源定位符)的缩写。它是一种用于标识和定位互联网上资源的地址,就像是互联网上的街道地址一样。比方说,当你在浏览器中输入一个网址,比如"https://www.example.com",这个网址就是一个URL。
NSURLCache:苹果公司提出的,作为其官方的缓存技术方案。NSURLCache是一个用于管理网络请求缓存的类。
请求链路:整个网络请求过程构建了一个紧密耦合的链路,从请求的启动(由用户触发)到请求过程(包括建立连接、发送请求、服务器处理和响应生成),再到请求回调(处理响应、数据解析和界面更新),这个流程如同一条高度交互的链条。链条中如果某一环断开,任务将无法继续往下传递。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
本发明实施例提供了一种基于SIP协议的高并发WebRTC网关处理方法、***,使用多个节点对服务进行分流,完成单节点无法完成的负荷。
请参阅图1,图1是本发明实施例公开的一种基于请求链路拦截的iOS应用网络数据缓存方法的流程示意图。如图1所示,本发明实施例的一种基于请求链路拦截的iOS应用网络数据缓存方法,包括:
S101,根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
本实施例,通过用户通过手机应用发起网络请求,应用创建请求工厂,请求工厂创建网络任务,网络任务开始创建一个请求链路。
S102,在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;
进一步,所述步骤S102中,根据所述请求链路判断是否存在请求拦截,包括:所述请求链路会通过循环遍历***组,判断是否存在请求拦截。
本实施例,在网络请求即将发送前,请求链路会循环遍历***组,如果有请求拦截,则暂时暂停当前的请求链路,达到中止后面的请求流程的目的。
S103,缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
本实施例,缓存***根据缓存策略做出不同的缓存操作,如从内存或磁盘获取缓存;缓存获取操作完成后,则恢复当前的请求链路,继续后面的请求流程。
S104,在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;
所述步骤S104中,根据所述响应链路判断是否存在响应拦截,包括:所述响应链路会通过循环遍历***组,判断是否存在响应拦截。
本实施例,网络请求继续发送后,在接收到服务器响应后,响应链路会循环遍历***组,如果有响应拦截,则暂时暂停当前的响应链路,达到中止后面的请求流程的目的。
S105,缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
本实施例,缓存***验证响应数据的合法性如数据结构以确保数据的完整性和准确性,校验通过的响应数据缓存到磁盘和内存,提高后续相同请求的响应速度。完成网络数据的缓存后,则恢复当前的响应链路,继续后面的请求流程;带网络数据回调给用户,整个流程结束。
进一步,所述步骤S103中,缓存***对所述请求数据进行缓存操作,还包括:
基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
进一步,所述步骤S104中,缓存***对所述响应链路的响应数据进行缓存操作,包括:根据自定义配置合法数据的数据结构,当接收到所述服务器的响应数据且有缓存需求时,所述缓存***根据响应对象获取基础路径地址,以基础路径地址为key,映射找出对应的合法数据数据结构,如果数据合法,执行缓存操作。
进一步,所述步骤S103中,缓存***对所述请求数据进行缓存操作,包括一级内存缓存、二级磁盘缓存、以及网络请求和更新步骤;
所述一级内存缓存步骤,包括:将从网络获取的数据先存储在内存中,通常使用字典或其他内存数据结构来保存;在请求数据之前,首先检查内存缓存中是否已经存在相应的数据,如果存在,直接从内存中获取;
所述二级磁盘缓存步骤,包括:如果内存缓存中不存在需要的数据,再去检查磁盘缓存;磁盘缓存通常使用文件***或数据库来实现;如果磁盘缓存中有相应数据,从磁盘中读取并同时存储到内存缓存中,以备将来的快速访问;
所述网络请求和更新步骤,包括:如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
本实施例执行缓存的策略包括多缓存策略以及双层缓存策略。
其中,多缓存策略可以在iOS应用中显著提升性能、用户体验以及应对特定需求的灵活性。通过选择不同的缓存策略,可以最大限度地减少对网络资源的依赖,从而提高应用性能。合理使用缓存能够加速数据加载速度,降低用户等待时间。自定义策略允许开发者根据具体业务需求定制策略,使得策略更贴合特定应用场景。如图2所示为本实施例的多缓存策略集合图。其中,多缓存策略包括缓存读取策略、自定义策略。
缓存读取策略包含以下:
(1)只同步网络数据、读取缓存:好比打开一个APP,它会先看看手机里有没有之前存储的数据,如果有,就直接用;如果没有,就去服务器上请求最新的数据。
(2)同步网络数据、有缓存只使用缓存:想象一下你打开一个应用,它先看看手机里的缓存数据,如果有,就直接显示给你看。不管它是否是最新的,如果没有,再去服务器请求新的数据。
(3)没缓存同步网络数据:就像你打开一个应用,但是手机里没有保存之前的数据。这时候,它会直接去服务器请求最新的数据,不考虑之前是否有保存过。
(4)只读取缓存:想象一下你打开一个应用,它不管服务器上有没有新的数据,只是直接显示你之前存储在手机里的数据,就好比打开相册看之前拍的照片。
这些策略就是告诉应用程序在获取数据时是优先使用本地保存的数据,还是直接从服务器获取新的数据,或者是混合使用两者。这样可以根据不同的情况,选择最合适的方式来提供给用户所需的信息。
自定义策略包含但不限于:
(1)服务端响应数据合法性:响应数据需要缓存到本地,必须要验证响应数据的合法性。开发者可以自定义配置合法数据的数据结构,当接收到服务端响应数据且有缓存需求时,则根据响应对象获取基础路径地址,以基础路径地址为key,映射找出对应的合法数据数据结构,如果数据合法,才能写入缓存。
(2)请求匹配:使用缓存键(Cache Key)来标识请求,确保相同的请求会命中相同的缓存。考虑请求链路参数、HTTP方法、URL等因素来生成唯一的缓存键。
(3)忽略请求参数:在生成缓存键时,可以忽略部分请求参数,以避免参数变化导致缓存失效。通过策略配置,定义哪些参数在生成缓存键时需要被忽略。
(4)安全性:实施数据加密和解密算法,确保敏感信息在存储和传输时得到保护。
(5)缓存有效期、条数、容量:每次应用启动,根据默认有效期或自定义配置的有效期,检查本地数据库已过期数据并删除。实现缓存淘汰策略,确保缓存不会无限增长。使用算法来管理缓存的容量和保持最新的数据。
除了以上已默认集成的自定义策略,提供扩展点或插件机制,允许开发者自定义缓存策略;制定清晰的API和文档,使得开发者能够轻松地扩展适用于自己应用场景的缓存策略。
此外,在iOS应用中,一级缓存和二级缓存都是提高性能和优化用户体验的重要手段。但相比只有内存缓存或者磁盘缓存的一种的情况下,当内存缓存和磁盘缓存同时存在时,通常被称为"双层缓存"或"双层缓存"。这种缓存策略结合了内存和磁盘的优势,以提供更灵活的性能和存储能力。内存缓存用于存储频繁访问的数据,以快速响应应用的需求,而磁盘缓存则用于存储更大容量的数据,以及在应用关闭后持久保存数据。这样的组合使得应用可以在有限的内存空间内高效地管理常用数据,同时又能够保留大量的数据以提供更全面的功能。
如图3所示为本实施例的双层缓存流程图。
流程可以概括为以下几点:
(1)内存缓存(一级缓存):
将从网络获取的数据先存储在内存中,通常使用字典或其他内存数据结构来保存;在请求数据之前,首先检查内存缓存中是否已经存在相应的数据。如果存在,直接从内存中获取,避免了网络请求,提高响应速度。
本实施例,内存缓存适用于频繁访问的数据,但由于内存有限,不适合存储大量或持久化的数据。
(2)磁盘缓存(二级缓存):
如果内存缓存中不存在需要的数据,再去检查磁盘缓存。磁盘缓存通常使用文件***或数据库来实现;如果磁盘缓存中有相应数据,从磁盘中读取并同时存储到内存缓存中,以备将来的快速访问。
本实施例,磁盘缓存适用于大量数据、需要持久保存的数据,以及在应用关闭后仍需要访问的数据。
(3)网络请求和更新:
如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
本实施例,更新内存缓存是为了提高后续的访问速度,而更新磁盘缓存是为了在应用关闭后保持数据的持久性。
如图4所示为本实施例的请求链路缓存拦截时序图。本实例的请求链路拦截详情和触发机制如下:
(1)用户通过手机应用发起网络请求,应用创建请求工厂,请求工厂创建网络任务,网络任务开始创建一个请求链路。
(2)在网络请求即将发送前,请求链路会循环遍历***组,如果有请求拦截,则暂时暂停当前的请求链路,达到中止后面的请求流程的目的。
(3)缓存***根据缓存策略做出不同的缓存操作,如从内存或磁盘获取缓存。缓存获取操作完成后,则恢复当前的请求链路,继续后面的请求流程。
(4)网络请求继续发送后,在接收到服务器响应后,响应链路会循环遍历***组,如果有响应拦截,则暂时暂停当前的响应链路,达到中止后面的请求流程的目的。
(5)缓存***验证响应数据的合法性如数据结构以确保数据的完整性和准确性,校验通过的响应数据缓存到磁盘和内存,提高后续相同请求的响应速度。完成网络数据的缓存后,则恢复当前的响应链路,继续后面的请求流程。
(6)网络数据回调给用户,整个流程结束。
进一步,所述方法还包括:每次iOS应用启动时,根据默认有效期或自定义配置的有效期,检查本地数据库已过期数据并删除。
此外,如图5所示,本实施例的第二方面提供了一种基于请求链路拦截的iOS应用网络数据缓存***,所述***包括创建模块501、第一判断与拦截模块502、第二判断与拦截模块503,其中:
创建模块501,用于根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
第一判断与拦截模块502,用于在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;基于缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
第二判断与拦截模块503,在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
进一步,根据所述请求链路判断是否存在请求拦截,包括:所述请求链路会通过循环遍历***组,判断是否存在请求拦截;根据所述响应链路判断是否存在响应拦截,包括:所述响应链路会通过循环遍历***组,判断是否存在响应拦截。
进一步,所述第一判断与拦截模块中,缓存***对所述请求数据进行缓存操作,包括一级内存缓存、二级磁盘缓存、以及网络请求和更新步骤;
所述一级内存缓存步骤,包括:将从网络获取的数据先存储在内存中,通常使用字典或其他内存数据结构来保存;在请求数据之前,首先检查内存缓存中是否已经存在相应的数据,如果存在,直接从内存中获取;
所述二级磁盘缓存步骤,包括:如果内存缓存中不存在需要的数据,再去检查磁盘缓存;磁盘缓存通常使用文件***或数据库来实现;如果磁盘缓存中有相应数据,从磁盘中读取并同时存储到内存缓存中,以备将来的快速访问;
所述网络请求和更新步骤,包括:如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
进一步,所述缓存***对所述请求数据进行缓存操作,还包括:基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
进一步,所述缓存***对所述响应链路的响应数据进行缓存操作,包括:根据自定义配置合法数据的数据结构,当接收到所述服务器的响应数据且有缓存需求时,所述缓存***根据响应对象获取基础路径地址,以基础路径地址为key,映射找出对应的合法数据数据结构,如果数据合法,执行缓存操作。
进一步,所述***还包括检查模块,用于每次iOS应用启动时,根据默认有效期或自定义配置的有效期,检查本地数据库已过期数据并删除。
此外,本发明的第三方面提供了一种电子装置,所述电子装置包括:一个或多个处理器,存储器,所述存储器用于存储一个或多个计算机程序;其特征在于,所述计算机程序被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上第一方面所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
此外,本发明的第四方面提供了一种存储介质,所述存储介质存储有计算机程序;所述程序由处理器加载并执行以实现如上第一方面所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网格设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于请求链路拦截的iOS应用网络数据缓存方法,其特征在于,所述方法包括:
根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;
缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;
缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
2.根据权利要求1所述的基于请求链路拦截的iOS应用网络数据缓存方法,根据所述请求链路判断是否存在请求拦截,包括:根据所述响应链路判断是否存在响应拦截,包括:所述响应链路通过循环遍历***组,判断是否存在响应拦截。
3.根据权利要求2所述的基于请求链路拦截的iOS应用网络数据缓存方法,所述缓存***对所述请求数据进行缓存操作,包括一级内存缓存、二级磁盘缓存、以及网络请求和更新步骤;
所述一级内存缓存步骤,包括:将从网络获取的数据先存储在内存中,使用字典或其他内存数据结构来保存;在请求数据之前,首先检查内存缓存中是否已经存在相应的数据,如果存在,直接从内存中获取;
所述二级磁盘缓存步骤,包括:如果内存缓存中不存在需要的数据,再去检查磁盘缓存;磁盘缓存使用文件***或数据库来实现;如果磁盘缓存中有相应数据,从磁盘中读取并同时存储到内存缓存中,以备将来的快速访问;
所述网络请求和更新步骤,包括:如果内存缓存和磁盘缓存均没有需要的数据,进行网络请求,从服务器获取最新数据;将获取到的数据存储到内存缓存和磁盘缓存中,以供下次访问使用。
4.根据权利要求3所述的基于请求链路拦截的iOS应用网络数据缓存方法,所述缓存***对所述请求数据进行缓存操作,还包括:
基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
5.根据权利要求4所述的基于请求链路拦截的iOS应用网络数据缓存方法,所述缓存***对所述响应链路的响应数据进行缓存操作,包括:
根据自定义配置合法数据的数据结构,当接收到所述服务器的响应数据且有缓存需求时,所述缓存***根据响应对象获取基础路径地址,以基础路径地址为key,映射找出对应的合法数据数据结构,如果数据合法,执行缓存操作。
6.根据权利要求5所述的基于请求链路拦截的iOS应用网络数据缓存方法,所述方法还包括:每次iOS应用启动时,根据默认有效期或自定义配置的有效期,检查本地数据库已过期数据并删除。
7.一种基于请求链路拦截的iOS应用网络数据缓存***,其特征在于,所述***包括创建模块、第一判断与拦截模块、第二判断与拦截模块,其特征在于:
创建模块,用于根据iOS应用发起网络请求时创建请求工厂,根据所述请求工厂创建网络任务,根据所述网络任务创建一请求链路;
第一判断与拦截模块,用于在所述网络请求发送之前,根据所述请求链路判断是否存在请求拦截,若存在则暂停当前的请求链路;所述网络请求包括请求数据;基于缓存***对所述请求数据进行缓存操作;缓存操作完成后,则恢复所述请求链路,发送所述网络请求至服务器;
第二判断与拦截模块,在接收到服务器响应后,根据所述网络任务创建一响应链路;根据所述响应链路判断是否存在响应拦截,若存在则暂停当前的响应链路;缓存***对所述响应链路的响应数据进行缓存操作;完成所述响应数据的缓存后,则恢复当前的响应链路,并将响应数据回调至iOS应用。
8.根据权利要求7所述的基于请求链路拦截的iOS应用网络数据缓存***,所述缓存***对所述请求数据进行缓存操作,还包括:基于缓存键对所述请求数据进行缓存标识;所述缓存键根据请求链路参数、URL地址、HTTP方法中的至少一项来确定;
对所述请求数据进行缓存操作时确定缓存中是否存在相同缓存标识的数据,若存在则将所述请求数据缓存至相同缓存标识所在的缓存空间。
9.一种电子装置,所述电子装置包括:一个或多个处理器,存储器,所述存储器用于存储一个或多个计算机程序;其特征在于,所述计算机程序被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1-6任一项所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
10.一种存储介质,所述存储介质存储有计算机程序;所述程序由处理器加载并执行以实现如权利要求1-6任一项所述的基于请求链路拦截的iOS应用网络数据缓存方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311749713.3A CN117714541A (zh) | 2023-12-18 | 2023-12-18 | 基于请求链路拦截的iOS应用网络数据缓存方法、*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311749713.3A CN117714541A (zh) | 2023-12-18 | 2023-12-18 | 基于请求链路拦截的iOS应用网络数据缓存方法、*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117714541A true CN117714541A (zh) | 2024-03-15 |
Family
ID=90147670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311749713.3A Pending CN117714541A (zh) | 2023-12-18 | 2023-12-18 | 基于请求链路拦截的iOS应用网络数据缓存方法、*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117714541A (zh) |
-
2023
- 2023-12-18 CN CN202311749713.3A patent/CN117714541A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9253278B2 (en) | Using entity tags (ETags) in a hierarchical HTTP proxy cache to reduce network traffic | |
US10061852B1 (en) | Transparent proxy tunnel caching for database access | |
US7814234B2 (en) | Offline execution of web based applications | |
JP6050343B2 (ja) | 最近使用した文書のリストの自動同期 | |
US7421542B2 (en) | Technique for data cache synchronization | |
CN109446457A (zh) | 页面数据的更新方法、终端设备及介质 | |
US10645192B2 (en) | Identifying content files in a cache using a response-based cache index | |
US20120102134A1 (en) | Cache sharing among branch proxy servers via a master proxy server at a data center | |
CN110795395B (zh) | 文件部署***和文件部署方法 | |
US20150188999A1 (en) | System and method to extend the capabilities of a web browser to improve the web application performance | |
CN109558378A (zh) | 文件管理方法、装置、设备及存储介质 | |
CN113609167B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20170024319A1 (en) | Performing efficient cache invalidation | |
US11360944B2 (en) | Reconciliation of data in a distributed system | |
CN111240892A (zh) | 数据备份方法及装置 | |
CN113364887B (zh) | 一种基于ftp的文件下载方法、代理服务器和*** | |
CN110472169A (zh) | 缓存配置方法、装置、计算机设备和存储介质 | |
JP2017191600A (ja) | コンテンツ配信ネットワーク(cdn)における無効化 | |
CN117714541A (zh) | 基于请求链路拦截的iOS应用网络数据缓存方法、*** | |
CN110807040B (zh) | 管理数据的方法、装置、设备及存储介质 | |
CN107544854B (zh) | 一种跨进程数据的同步存取方法及*** | |
WO2017092356A1 (zh) | 用于提供服务数据的服务器、方法及*** | |
CN103701844A (zh) | 管理用户信息的方法及*** | |
CN113138943A (zh) | 一种处理请求的方法和装置 | |
WO2015165034A1 (zh) | 加载网页的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |