CN118316956A - 车控应用程序的网络请求优化方法、装置及存储介质 - Google Patents

车控应用程序的网络请求优化方法、装置及存储介质 Download PDF

Info

Publication number
CN118316956A
CN118316956A CN202410362878.3A CN202410362878A CN118316956A CN 118316956 A CN118316956 A CN 118316956A CN 202410362878 A CN202410362878 A CN 202410362878A CN 118316956 A CN118316956 A CN 118316956A
Authority
CN
China
Prior art keywords
network
data
request
strategy
network request
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
Application number
CN202410362878.3A
Other languages
English (en)
Inventor
修怀忠
陈裕聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Selis Phoenix Intelligent Innovation Technology Co ltd
Original Assignee
Chongqing Selis Phoenix Intelligent Innovation Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing Selis Phoenix Intelligent Innovation Technology Co ltd filed Critical Chongqing Selis Phoenix Intelligent Innovation Technology Co ltd
Priority to CN202410362878.3A priority Critical patent/CN118316956A/zh
Publication of CN118316956A publication Critical patent/CN118316956A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请提供一种车控应用程序的网络请求优化方法、装置及存储介质。该方法包括:在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;执行握手优化策略,根据网络类型选择网络请求策略;根据网络状况将网络请求加入网络请求队列中,根据网络状态变化动态调整网络请求队列的执行;实行数据分布拉取策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。本申请提高网络请求的效率和稳定性,优化电量消耗,提升车控应用的整体性能。

Description

车控应用程序的网络请求优化方法、装置及存储介质
技术领域
本申请涉及应用程序开发技术领域,尤其涉及一种车控应用程序的网络请求优化方法、装置及存储介质。
背景技术
在现代社会,移动应用程序(App)已成为人们日常生活和工作不可或缺的一部分,其中许多App,特别是车控类应用程序,对网络的依赖性极高。网络请求的性能直接影响到应用程序的响应速度、用户体验及终端设备的能耗,尤其在车控App中,网络请求的优化对于确保驾驶安全和提升用户满意度具有重要意义。
目前,多数车控App在处理网络请求时,往往采用较为传统的网络通信方法,缺乏针对不同网络状况和数据类型的优化策略。虽然现有技术能够处理基本的网络请求,但在网络状态不稳定或数据量大的情况下,仍然面临着请求延迟高、失败率增加和电量消耗过快等问题。
现有技术存在的问题包括缺乏有效的策略对不同网络状况下的请求进行优化,导致在网络质量较差时App性能急剧下降。未能根据数据类型和请求的紧急程度灵活调整请求策略,造成非关键数据请求影响关键操作的响应速度。现有网络请求处理机制未能充分考虑电量消耗,对于移动终端特别是车载设备而言,过度的电量消耗可能影响其他重要功能的正常使用。
因此,亟需一种能够针对车控App的特点,综合考虑网络状况、数据类型及设备电量等因素,提出全面优化方案的技术,以提高网络请求的效率和稳定性,优化电量消耗,从而提升车控App的整体性能和用户体验。
发明内容
有鉴于此,本申请实施例提供了一种车控应用程序的网络请求优化方法、装置及存储介质,以解决现有技术存在的车控应用程序的网络请求效率低,稳定性差,电量消耗大的问题。
本申请实施例的第一方面,提供了一种车控应用程序的网络请求优化方法,包括:在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;利用预定的握手优化策略,优化应用程序与网络服务的握手时间,其中握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,其中网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织;实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
本申请实施例的第二方面,提供了一种车控应用程序的网络请求优化装置,包括:统一解析模块,被配置为在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;握手优化模块,被配置为利用预定的握手优化策略,优化应用程序与网络服务的握手时间,其中握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;网络请求模块,被配置为根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,其中网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;动态调整模块,被配置为创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织;下载策略模块,被配置为实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;数据刷新模块,被配置为当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
本申请实施例的第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;利用预定的握手优化策略,优化应用程序与网络服务的握手时间,其中握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,其中网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织;实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。本申请提高网络请求的效率和稳定性,优化电量消耗,从而提升车控App的整体性能和用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是现有技术中存在的车控App网络请求实现方法的流程示意图;
图2是本申请实施例提供的车控应用程序的网络请求优化方法的流程示意图;
图3是本实施例提供的客户端向服务器发送请求的示意图;
图4是本实施例提供的服务器向客户端返回数据的示意图;
图5是本实施例提供的实际场景中涉及的车辆列表的示意图;
图6是本申请实施例提供的车控应用程序的网络请求优化装置的结构示意图;
图7是本申请实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
如背景技术所述,当今社会,现在的大部分App几乎都非常依赖于网络操作,因此对网络请求的性能优化也显得非常重要,本申请的目的在于根据车控App网络请求优化的经验,提出一种改进车控App网络请求性能的优化方案。下面结合附图对现有技术中的车控App网络请求的实现过程进行详细说明,图1是现有技术中存在的车控App网络请求实现方法的流程示意图。如图1所示,该现有的车控App网络请求实现方法可以包括以下内容:
DNS查询:应用程序首先进行域名解析,通过DNS查询将用户请求的域名转换成IP地址,以便后续的网络连接。
CDN/边缘服务器缓存优化:请求被转发到内容分发网络(CDN),这是一组分布在多个地理位置的服务器,旨在通过就近原则提供内容给用户,以减少延迟。
SSL握手:一旦与服务器的IP地址建立连接,应用程序开始进行SSL握手。这是一个加密过程,确保数据传输的安全性。握手包括验证服务器证书和协商加密算法等步骤。
请求/响应:SSL握手完成后,应用程序发送具体的请求到服务器,服务器处理请求并返回相应的响应数据。
响应处理:应用程序接收到服务器的响应后,进行必要的处理,例如数据解析、界面更新等,以完成用户的请求。
由图1可见,该网络请求流程涉及多个网络操作,每个操作都可能对应用程序的性能产生影响。现有技术的局限性在于缺乏一个综合优化各个环节的方法,特别是在如下几个方面:
DNS查询优化:传统的DNS查询可能因网络状况不佳导致延迟,影响整个网络请求的速度。
内容分发优化:CDN的利用可能未针对车控App的特定需求进行优化,导致数据缓存和传输不够高效。
SSL握手优化:SSL握手是一个资源密集型操作,频繁的握手会增加请求延迟并消耗电量。
请求处理优化:现有流程可能未充分利用数据请求的合并处理,以减少不必要的网络延迟。
鉴于现有技术中存在的不足,本申请提出的改进方案旨在针对上述各环节提供优化措施,以改进车控App网络请求的性能。即本申请技术方案从车控App的网络请求的底层向上,对每一层从时间和性能(包括电量)上进行优化,最终实现:
1.底层如DNS查询、SSL握手上优化,尽可能节省请求时间。
2.根据从系统API获取到的不同网络类型分别制定数据请求策略,节省用户流量,保证每种网络下的用户体验为当前最佳。
3.从数据请求控制上制定多种策略,去掉不必要请求,最大程度流省。
需要说明的是,本申请技术方案虽然以iOS客户端举例,但是本申请技术方案的优势在于它不仅仅限于iOS客户端,尽管以此为例,但是它同样适用于其他平台,如Android,因为所涉及的思路和API是大多数移动操作系统都会提供的。
下面结合附图以及具体实施例对本申请技术方案的内容进行详细描述。
图2是本申请实施例提供的车控应用程序的网络请求优化方法的流程示意图。图2的车控应用程序的网络请求优化方法可以由应用程序来执行。如图2所示,该车控应用程序的网络请求优化方法具体可以包括:
S201,在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;
S202,利用预定的握手优化策略,优化应用程序与网络服务的握手时间,其中握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;
S203,根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,其中网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;
S204,创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织;
S205,实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;
S206,当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
在一些实施例中,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析,包括:
将预期访问的网络服务的接口关联到预设数量的域名下,其中将初始化服务接口统一配置到一个主域名下;将数据和资源提供接口统一到主域名或限制在预设数量的域名下;
实行域名连接策略,在应用程序的启动阶段,对关键服务的主域名进行即时DNS解析,对非即时性的服务或资源接口的子域名,提前进行DNS查询并缓存结果。
具体地,要减少DNS查询时间延迟,本实施例首先对App的域名使用进行优化。DNS(Domain Name System)解析是网络请求的首步,它将用户可读的网站域名转换成机器可读的IP地址。DNS查询可以影响网络请求的响应时间,因此优化这一环节可以显著提高网络操作的性能。
本申请实施例减少DNS查询时间产生延迟的策略包括以下两种,下面结合具体实施例分别对这两种策略的具体实现方式进行详细介绍,具体可以包括以下内容:
策略一:尽量减少应用使用的域名
由于每次对不同的域名进行DNS查询都会增加时间延迟。若App能够仅使用一个域名,那么只需进行一次DNS查询,之后对该域名的所有请求都可以直接使用缓存的IP地址,从而节省时间。以下是该策略的具体内容:
统一接口域名:将通常在App启动时调用的接口(比如登录、注销、配置数据的借口)统一到一个域名下。因为这些接口一般在用户打开App时请求,通过这种方式,可以确保这些请求能够快速响应。
统一数据接口域名:将这些接口在App运行过程中持续请求数据,例如获取用户信息、刷新内容等。将这些数据提供接口统一到一个单独的域名下,可以在用户使用App时减少DNS解析的次数。
统一资源接口域名:图片、视频、文件等资源通常通过专门的接口进行请求。将所有这类资源接口统一到一个域名,有助于对资源请求进行优化,例如通过缓存来提高响应速度。
通过采取上述策略一,当多个服务端或不同的服务需要多个域名时,App开发者应尽可能控制使用的域名数量,理想情况是保持在两位数以下。这样,即便有多个服务端,也能尽可能减少因DNS查询所产生的总体时间延迟。简而言之,这种策略通过减少DNS解析次数来减少延迟,从而加快网络请求的处理速度,优化用户体验。
相比于策略一,策略二主要关注如何在App启动时合理地进行域名连接以及如何执行DNS预解析以减少延迟。该策略的目标是在不影响用户体验的前提下,提前处理可能会造成延迟的操作。这里的“DNS预载”是指提前进行DN S查询,即使该域名下的具体服务可能在稍后才会被App请求。以下是该策略的具体内容:
在App启动时连接核心服务域名:初始时,仅连接那些对App运行至关重要的域名。例如,App需要进行用户身份验证或下载配置数据时所需的域名。这确保了App在启动阶段能快速响应,而不是在启动时就去解析所有可能用到的域名。
对后续可能请求的子域名进行DNS预解析:对于后续可能会被请求的服务,如子域名,App应该提前尝试进行DNS解析,以便当这些服务被实际请求时,可以立即使用之前解析的结果,而不需要等待新的DNS解析过程。
在一个示例中,具体DNS预载的实现方法包括以下内容:
1)预设URL的预连接:对于那些服务器可控范围内的子域名,设置一个不返回任何数据、仅返回HTTP 204状态码的预设URL。然后,对这个URL提前发起一个网络连接,这样做的目的是为了触发DNS解析,并将结果存储在缓存中。
2)使用gethostbyname函数进行明确的DNS查找:对于那些不在服务器可控范围内的域名,可以直接调用系统提供的gethostbyname函数进行明确的DNS查找。这个函数会对指定的域名进行DNS查询,并返回其IP地址。
3)特殊情况的处理:有时,相同的域名根据不同的协议(HTTP vs HTT PS)可能会解析到不同的IP地址。在这种情况下,gethostbyname函数可能不足以覆盖所有可能的IP地址。如果出现这种协议特定的域名解析差异,或者gethostbyname函数提醒有失效的风险,可以对主机进行一次“伪装连接”。这意味着App会对这个域名进行实际的网络连接尝试,即便没有实际的数据请求。这样的伪装连接能确保App在实际需要时能快速连接到正确的IP地址。
通过上述实施例提供的域名连接策略,App可以更加高效地管理其网络请求,减少启动时和运行时的网络延迟,改善用户体验。
在一些实施例中,利用预定的握手优化策略,优化应用程序与网络服务的握手时间,包括:
实行连接数量控制策略,对相同域名的请求进行合并,并对不同服务的连接策略进行优化,以降低网络连接数量;
在网络请求完成后,在网络请求的头部设置持久连接标志,保持网络连接处于打开状态,以使同一网络连接被后续的网络请求重复利用;
基于域分片技术,将不同的网络请求分散到相同IP地址的不同子域名上,以便将来自相同IP地址且不同子域名的网络请求通过单一物理连接进行并行处理。
具体地,车控App是要经过国家合规安全审查的,所以用的都是HTTPS,HTTPS在连接开始的时候要进行SSL握手,主要目的是校验服务器证书+共享通信中的随机密钥。因此,SSL握手是HTTPS连接的一个环节,它确保了数据传输的安全性,但也增加了时间延迟。以下是本实施例为降低SSL握手时间所采取的技术方案:
1)减少App连接数:类似于减少DNS查询次数,减少App创建的连接数也能减少SSL握手的次数。每次新的HTTPS连接都需要一个新的SSL握手,但如果能复用现有连接,则可以避免这个过程。
2)持久化HTTPS连接:在HTTPS请求的头部加入Connection:keep-aliv e,这样当一个请求完成后,不会立即关闭连接。如果有另一个请求要发送到同一个服务器,那么可以重用已经建立的连接。这个过程避免了多次握手,每次新请求都能更快地被处理。
3)利用域分片技术:鉴于iOS9之后,系统就对HTTP/2提供了支持,所以可以自由的采取域分片策略。使用域分片之后,即使连接的是不同的主机名,只要它们被解析为相同的IP、并且可以使用同样的安全证书,也可以使用同一个socket,缩短了请求时间。
通过上述实施例的方法,车控App在满足安全审查标准的同时,能有效减少由SSL握手引起的网络请求延迟,从而提高App的响应速度和整体性能。
在一些实施例中,根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,包括:
当设备连接至第一网络类型时,执行数据密集型的下载和缓存策略,以便进行大规模的缓存数据下载;
当设备连接至第二网络类型时,执行控制数据下载量策略,控制应用程序下载关键资源,并使资源大小与展示需求相匹配,对常规数据接口进行正常处理;
当设备连接至第三网络类型时,执行优先使用离线数据策略,控制应用程序下载压缩数据或禁止下载数据,并优先使用已缓存的离线数据,当切换到第一网络类型或第二网络类型时,将暂存队列中的请求按优先级处理。
具体地,由于车控App是运行在移动端设备(如手机。平板等)上而不是电脑上,手机的特点就是会随着用户移动,接入不同的信号,用户很在容易在强网、弱网、无网……之间切换,不同时间连接的网络类型也不一样。对于不同类型网络的特点,App需要制定不同的网络请求策略。从iOS提供的系统功能API,是可以拿到当前设备连接的网络类型的,根据以下不同网络类型制定不同的网络请求策略,具体内容如下:
1)WiFi(第一网络类型):如果WIFI连接了互联网,则普遍认为当前网络是持续且高质量的。于是适合将视频文件等资源型下载,以及防御性的缓存数据下载(后面还会讲),都放到这种网络下。
2)5G/4G(第二网络类型):这种网络可以爆发性的发送数据,且周围人越少,速度越高。介于这种网络一般要花用户的钱,需要谨慎下载大量数据的资源(只下载必须的资源且资源的大小尽量和展示时一致),但是常规的数据接口请求不受影响。
3)3G/2G(第三网络类型):这种网络带宽较低,3G可能稍微好一点。这种网络下,只下载必须的压缩数据(如页面必须的请求数据)或者不下,尽量使用前面下载过的离线数据,否则用户体验极差。还有另一种做法是将请求暂存到队列中,当网络类型切换到上面另外两种网络类型(即WiFi或5G/4G)后,再立刻根据情况下载数据。
需要说明的是,每当应用建立网络连接时,设备的网络硬件都会在连接完成后多维持几秒的活动时间。所以,每次集中的网络通信都会消耗大量的电量。要想减轻这个问题带来的危害,App就需要有所保留地、只在必要时使用网络。应该定期集中短暂地使用网络,而不是持续地保持着活动的数据流。只有这样,网络硬件才有机会被关闭。才可以节省用户的电量。
通过上述实施例的策略,App能在不同的网络状况下平衡数据使用量和用户体验,避免在数据连接成本高或连接质量差的情况下过度消耗用户的数据流量或电量,同时确保App在任何网络条件下都能尽可能有效地运行。
在一些实施例中,创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,包括:
根据应用程序的网络请求和业务需求,创建多个网络请求队列,其中网络请求队列包括资源请求队列和关键数据请求队列;
开发并部署发起网络函数,发起网络函数用于根据当前的网络状况动态分配网络请求至相应的网络请求队列中:
其中,当检测到设备处于无网或弱网的状态时,发起网络函数根据网络请求的来源,将网络请求分配至资源请求队列或关键数据请求队列中,并暂缓执行;当检测到设备处于有网或强网的状态时,利用发起网络函数激活网络请求队列,以执行网络请求队列中的请求。
具体地,在网络队列策略方面,本实施例提出了一种将网络请求分配到不同队列中的方法,以管理和优化移动设备上的数据传输。这种方法尤其适用于网络状态不稳定或者需要对网络请求进行优先级排序的情况。本实施例技术方案可以包括以下内容:
1)创建多个网络请求队列:
每个队列都有一个特定的目的和优先级,用于存放还未发送的网络请求。这些队列可以根据网络请求的性质和紧急程度来组织。
2)分配请求到相应的队列:
资源请求队列:用于存放非紧急的资源下载请求,比如图片、视频等。这些请求通常不需要立即处理,可以在网络条件较好时才执行。
防御性缓存数据下载队列:这可以是一个独立的队列,用于下载那些在未来可能需要但不紧急的数据。通过预先下载这些数据,App可以在没有网络连接时仍然提供一定的功能。
关键数据队列:用于存放紧急的请求,例如,当用户打开一个页面时,页面上必要的数据需要立即加载。
3)管理队列执行:
根据当前网络状态,智能地决定哪个队列中的请求应该被发送。在网络条件优良时,可以同时处理多个队列中的请求。如果网络条件不好,可以只处理关键数据队列中的请求,或者完全暂停请求发送。队列可以按照优先级来执行,确保最重要的请求最先被处理。
4)适应网络变化:
如果网络状态改变(例如,从3G切换到WiFi),队列策略可以动态适应。在网络改善时,暂停的或者低优先级的请求可以恢复发送。
本实施例的上述网络队列策略提高了网络请求的效率和有效性。它允许App在网络状态不稳定时继续操作,并且在网络状况允许的情况下,最大限度地利用可用的网络资源。通过这种方式,即使在网络质量不佳的情况下,App也能尽可能地保证关键功能的正常使用,同时在网络状况较好时完成非关键的数据传输任务。
进一步地,本实施例在需要发送网络请求的时机,调用本实施例自定义的“发起网络”函数。“发起网络”函数逻辑如下:
1)如果当前是无网或弱网,将请求按照来源,选择加入资源请求队列或者关键数据队列。
2)如果当前是有网或者强网,将请求加入对应的队列,并让队列开始执行。
具体地,本实施例的发起网络函数负责根据网络状况智能分配网络请求。这种方法优化了在不同网络条件下的App性能,确保了关键数据的快速加载,同时避免了在网络状况不佳时进行非关键资源的下载。以下是本实施例的具体内容:
首先,定义“发起网络”函数:该函数是应用程序中用于处理所有出站网络请求的中央功能点。它被设计成能够评估和响应当前的网络状况。
接着,评估网络状况:在任何网络请求发出之前,"发起网络"函数首先检查当前的网络连接状态。利用系统API来确定设备是否有网,以及网络是强还是弱。
然后,请求分配到队列:如果检测到无网或弱网状态,根据请求的性质,将其分配到资源请求队列或关键数据队列中。资源请求队列可以包含非关键性资源下载,如图片和视频。关键数据队列包含必须立即处理的数据,如用户操作结果或页面必要内容。如果网络状况是有网或强网,将请求直接添加到相应的队列,并且指示队列立即开始处理请求。
进一步地,队列处理请求:每个队列将独立监控并执行其内部的请求。在网络状况改善时,那些在弱网状态下被暂停的请求队列将被重新激活,开始发送请求。
最后,动态响应网络变化:如果在请求被暂停后网络状况改善,"发起网络"函数会重新评估队列中的请求并开始执行。如果网络状况恶化,那么即使请求已经被添加到执行队列中,也可能会被暂停或重新排队。
通过上述实施例的策略,车控App可以更加高效地管理网络请求,减少不必要的数据传输,在网络状况不佳时避免用户体验受到负面影响,并在网络条件允许时优先处理关键任务。这有助于提升用户在各种网络条件下的App使用体验。
在一些实施例中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织,包括:
实施网络类型划分及变化检测,对实时网络状态进行监控,并根据预设的网络状态类别动态调整网络请求队列的活动状态,以便在网络状态变化时,根据预设优先级管理网络请求队列的请求处理;根据网络请求的优先级,利用大根堆算法对网络请求处理顺序进行优化,并实施操作合批策略,将相似的网络请求合并为一个批量请求。
具体地,网络类型划分:iOS系统或者三方库都提供了很多API(如Reachability),可以监控当前网络状态,根据业务需求,可以将网络分为2类、3类或者更多,从而制定更复杂的策略。
在一个示例中,可以划分成以下两类:可用和不可用;此时,可以将检测到的wifi网络类型和5G/4G网络视为可用,其他网络视为不可用。如果划分成以下三类:强网、弱网和无网;此时,可以将检测到的wifi网络类型和5G/4G网络视为强网,3G/2G视作弱网,其他网络视为不可用。
进一步地,变化检测:因为网络变化时,系统会调用对应的回调函数,所以在函数中写:如果当前是无网或弱网,挂起所有队列。队列中的所有网络请求会停止。如果当前是有网或者强网,启动所有队列。队列中的所有网络请求会继续。
进一步地,本实施例还提出了一种"队列的组织排布"的策略,该策略主要用于高效地管理和执行不同类型的网络请求队列,确保在有限的网络资源下,最重要的任务能够得到优先处理。iOS提供了多种队列管理机制,例如:NSOp erationQueue、GCD(GrandCentral Dispatch)、NSThread等,每种机制都有其特定的使用场景和优缺点。以下是该策略的具体内容:
1)选择合适的队列管理机制:根据不同的业务需求,选择最适合的队列实现机制。例如,NSOperationQueue提供了高级别的抽象,适合复杂的任务依赖和并发控制;GCD适合执行简单任务和进行细粒度的并发控制;NSThread提供了最基本的线程操作。
2)划分不同优先级的队列:将网络请求根据其重要性分配到不同的队列中。关键数据请求,如用户交互相关的请求,应该放在优先级高的队列中;而资源下载或缓存更新等非关键请求,则可以放在优先级较低的队列中。
3)应用优先级堆管理队列:可以采用大根堆的数据结构来管理这些队列,确保每次都能优先处理最高优先级的队列。在网络状态良好时,可以并行处理多个队列中的请求。而在网络状态不佳时,可以只处理或优先处理高优先级的队列。
4)根据网络状态动态调整队列处理:当网络状况发生变化时,系统需要重新评估当前的网络状况,并调整队列的处理策略。如果网络由弱变强,系统可以启动或加速处理更多的队列;如果网络由强变弱,系统可能需要暂停或减慢低优先级队列的处理,确保关键请求能够得到及时处理。
通过上述实施例的策略,车控App能够确保在不同网络条件下有效地管理网络请求,优先处理最重要的任务,同时根据网络状况的变化灵活调整各类请求的处理速度,最大化用户体验和应用性能。
进一步地,本实施例还提出了一种"操作合批"的策略,该策略主要针对那些时效性要求不高的网络请求,旨在通过将多个请求合并为一个批量请求来减少网络传输次数,从而提高效率和降低资源消耗。这种方法特别适用于可以延迟处理或同时处理的请求,能有效减少HTTP连接的开销。
下面结合附图及实施例对本申请提供的"操作合批"策略的具体内容进行详细说明,图3是本实施例提供的客户端向服务器发送请求的示意图,图4是本实施例提供的服务器向客户端返回数据的示意图。如图3至图4所示,该"操作合批"策略可以包括以下内容:
1)识别可合批的请求:在应用中识别出那些时效性要求不高的请求,这些请求通常不需要立即单独响应,可以等待与其他请求合并处理。例如,一些后台数据更新请求、日志上传、非即时性的资源下载等。
2)构建请求复用器:开发一个请求复用器,该复用器能够接收多个独立的请求,将它们合并为一个批量请求。复用器需要能够处理不同类型的请求,将它们合理组织在一起,并构建一个统一的请求包。
3)发送批量请求:通过网络发送合并后的批量请求。服务器收到这个批量请求后,可以并行处理包含的各个子请求。服务器处理完成后,使用“多部分回复”或“混合回复”等技术返回一个包含所有响应结果的复合回复。
4)客户端处理响应:客户端接收到包含多个响应的复合回复后,需要将其分解,将各个子响应分发到相应的处理程序中。这样,虽然多个请求被合并发送和接收,但最终每个请求都能得到正确的处理。
通过上述实施例的操作合批的方法,可以显著减少网络请求的次数,减轻服务器压力,同时在客户端也能减少网络资源的消耗,特别是在移动设备上,这可以带来显著的性能提升和用户体验的优化。
在一些实施例中,实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理,包括:
对于流媒体内容,利用自适应比特率流媒体技术或HTTP实时流技术,依据当前网络条件动态调整下载速度;对于非流媒体内容,根据网络类型和数据量需求实施动态数据下载量策略;当网络请求失败时,利用指数回退方式对失败的网络请求进行重试,并为失败的网络请求设置最大重试次数或最大重试间隔。
具体地,本实施例的"数据控制"部分,重点在于对不同类型的数据采取相应的获取和处理策略,尤其是在如何高效地处理流媒体数据上。通过这种策略,App能够根据当前网络状况调整数据传输,以优化性能和用户体验。以下是数据分布拉取策略的具体内容和实现过程:
1)针对流媒体的特定策略:
应用HTTP实时流或自适应比特率流媒体技术,这些技术能够根据当前的网络状况动态调整视频数据的质量和下载速度,从而保证即使在网络条件不稳定的情况下也能提供流畅的播放体验。
2)优化弱网环境下的流媒体播放:
在网络连接较弱时,App应该避免自动播放视频,以减少不必要的数据消耗。服务器端应该为每个视频提供预览图,客户端首先下载并展示这些低数据量的图片。只有当用户主动点击播放时,才开始下载并播放视频数据。
3)实现自适应流媒体技术:
开发或集成支持自适应流技术的播放器,在客户端根据网络条件实时调整视频质量。确保播放器能够快速响应网络带宽的变化,无需用户干预即可切换到适当的视频质量。
4)用户交互优化:
通过用户界面明确告知用户当前是在预览模式,需要用户点击才能播放完整视频,这样可以增加用户对数据使用的控制,同时减少不必要的数据传输。
通过上述策略,App在处理流媒体数据时能更加智能和高效,不仅优化了网络资源的使用,也提升了用户在各种网络条件下的观看体验。这种数据控制策略确保了即使在网络质量不佳的情况下,用户也能享受到尽可能好的服务。
进一步地,针对其他类型的数据,尤其是那些非流媒体的数据,本实施例提供了一种动态数据下载策略,以适应不同的网络环境。这种策略需要根据当前网络的类型和质量来决定请求数据的量。例如,在下载车辆列表信息时,应该根据网络状况动态调整下载的数据量。以下是动态数据下载策略的具体内容:
1)评估网络状况:
使用iOS系统或第三方库提供的API,如Reachability,来监测当前的网络类型和质量。根据网络状况(强网、弱网、无网)决定数据下载的策略。
2)制定数据下载策略:
在强网环境(如WiFi或5G/4G)下,可以下载更多数据,比如上述的车辆列表,可以下载完整的200条记录,以便用户可以访问更多的信息。在弱网环境(如3G/2G)下,应减少数据量,比如仅下载车辆列表的前50条记录,以减少等待时间和数据消耗。在无网环境下,应依赖于缓存的数据,不进行新的数据请求。
3)动态调整下载量:
根据网络状态的实时变化动态调整数据下载量。例如,如果用户在查看车辆列表时网络从3G切换到WiFi,应增加后续数据的下载量。如果没有具体的业务需求指定下载量,应设计算法根据网络速度和稳定性智能决定下载量。
4)优化用户体验:
在数据较少下载时,提供给用户清晰的反馈和加载状态,让用户知道更多数据正在加载或可在更好的网络环境下获取。允许用户在需要时手动请求更多数据,提供"加载更多"的选项。
下面结合附图及一个具体示例对本申请提供的动态数据下载策略的内容进行详细说明,图5是本实施例提供的实际场景中涉及的车辆列表的示意图。如图5所示,该动态数据下载策略可以包括以下内容:
如果当前是弱网,或者是需要用户花钱的5G/4G网络,则应该遵循最少使用原则,获取必要的数据即可。根据用户滑动列表的速度,得到当前视图的位移,除以每个单元格的高度,从而得到用户期望的条数。
例如:根据图5中的列表,每页有三个单元格。当用户滑动速度快接近停止时,通过系统回调函数得到当前视图的位移,假如是500,用500除以每个单元格高度100,得到5,所以用户滑动到了第2页。本次只需要下载2页的数据,也就是6个。
如果当前是强网,或者不需要花费钱财的网络,则可以下载防御性数据。还是按照以上示例来说,可先下载第3、4、5页的数据进行缓存。这个阈值可以根据具体页面和接口和用户的不同,制定具体的不同阈值。
还可以根据埋点上报的方式进行大规模的统计,确定阈值。例如:对于汽车新闻数据的页面,可大规模统计用户实际翻看的页数,不同用户的习惯不同,例如用户A可能大多数时候翻看到第3页,历史最大翻看数是第5页,则针对该用户,防御性数据的阈值可以设置为第3页,或者第4页,或者第5页。
用户B可能大多数时候翻看到第2页,历史最大翻看数是第10页,则针对该用户,防御性数据的阈值可以设置为第2页,然后根据后继的上报反馈,持续观察用户习惯是否有所改变,如果改变,可根据实际情况,将阈值递增或递减,最终达到稳定。
通过实施上述策略,车控App不仅可以在不同网络环境下灵活调整数据下载量,而且还能根据实时网络状况动态优化数据获取,从而在确保用户体验的同时,也有效管理数据使用,减少不必要的网络资源消耗。
进一步地,本实施例还提出了一种失败后的重试策略,该策略是针对网络请求失败时如何智能地重新尝试获取数据。采用随机的、指数增长的延迟进行重试,这样可以避免在网络状况不佳时频繁地发送请求,同时也能在一定程度上避免因多个设备同时重试造成的网络拥堵。以下是失败重试策略的具体内容:
1)监测请求失败:实现机制以捕获网络请求失败事件。当一个请求因为网络问题或其他原因失败时,触发重试机制。
2)实施指数退避策略:当第一次请求失败时,设置一个短暂的延迟(例如1秒)后进行重试。如果再次失败,延迟时间翻倍进行下一次重试,例如2秒后重试。持续这个过程,每次失败后延迟时间翻倍,直到成功或达到最大重试次数或最大延迟间隔。
3)设置最大重试次数和最大重试间隔:为避免无限重试,需要为每个网络会话设置最大重试次数或最大重试间隔。例如,可以设置最大重试次数为5次,或者设置最大重试间隔为64秒。当达到任一限制时,停止重试并根据需要处理失败情况。
4)随机化延迟时间:在指数退避基础上引入随机化,以避免多个设备或请求在完全相同的时间点上重试,造成网络拥堵。例如,不是简单地延迟1秒、2秒,而是在这个基础上加上一个小的随机时间,如1秒后再加上0到0.5秒的随机延迟。
5)处理最终失败:在重试次数耗尽后,如果数据仍未成功获取,应执行失败处理流程,比如显示错误信息、提供手动重试的选项等。
通过上述失败重试策略,车控App能够更加智能和有弹性地处理网络请求失败情况,优化用户体验,并减少因网络不稳定造成的数据获取失败问题。
在一些实施例中,当触发数据刷新操作时,执行预定的数据刷新策略,包括:
当用户请求数据刷新时,判断当前请求与上次成功请求之间的时间间隔是否小于预设时间阈值,若时间间隔小于时间阈值,则对当前请求的发送进行延迟或取消,否则执行数据刷新。
具体地,本实施例通过设立数据刷新之间的最短时间旨在优化用户主动触发的数据刷新操作,如下拉或上滑刷新。这个策略通过避免在短时间内重复发送相同的数据请求来减少不必要的网络使用,从而节省用户流量并减少服务器负载。以下是该策略的具体内容:
1)请求检查机制:当用户触发数据刷新操作时(例如下拉刷新),App首先检查是否已经存在一个相同的待处理或正在进行的请求。如果已存在,则App不会发起新的请求,而是等待现有请求完成,避免重复工作。
2)设置最短时间间隔:为每种类型的数据刷新操作设定一个最短时间间隔,例如30秒。这意味着,如果用户在30秒内重复进行同样的刷新操作,App不会发送新的请求到服务器。这个时间间隔应该根据具体的业务需求和用户体验来设定。
3)时间间隔验证:当用户尝试刷新数据时,App检查上次该类型请求的完成时间。如果当前时间与上次请求完成的时间差小于预定的最短时间间隔,则App不发起新的请求。如果时间间隔足够长,则允许新的数据刷新请求。
4)用户界面响应:即使在用户请求被阻止的情况下,也应确保App提供适当的用户反馈。例如,可以显示一条消息告知用户“数据已是最新”,或简单地结束刷新动作,避免让用户感到困惑。
5)节省流量和资源:通过这种机制,App能够减少在短时间内对服务器的重复请求,从而节省用户的数据流量和减轻服务器压力。
这种策略通过智能地管理用户触发的数据刷新请求,不仅提高了网络资源的使用效率,还优化了用户体验,避免了不必要的数据传输和处理。
进一步地,本实施例还提供了一种客户端离线缓存的策略,对于不需要即时的数据和交互,尽可能的做离线逻辑和离线缓存。例如:用户可以点赞、评论车控社区的帖子,这些功能对实时性要求不高,其业务逻辑和数据可以现在客户端本地更新。当检测到网络情况变好后,再发送情况,和服务器同步数据。
根据本申请实施例提供的技术方案,本申请通过对DNS查询和SSL握手过程的优化,本技术方案显著减少了网络请求的整体时间。具体而言,利用域名预解析和持久化的连接策略,减少了DNS查询所需的时间,并通过维持SS L连接状态,避免了多次握手的时间损耗。这种优化尤其在车控App中显得至关重要,因为它需要快速响应用户的控制请求以确保驾驶安全。
本技术方案根据不同网络类型(如WiFi、4G/5G、3G/2G)使用系统API动态调整数据请求策略,从而为用户节省了流量,并在不同的网络环境中提供了最佳的用户体验。例如,在高速但成本较高的网络下,如4G/5G,优化策略会更加谨慎地处理大量数据的下载,而在速度较慢的网络环境下,则会尽量利用离线数据来响应用户请求。
本技术方案通过精细化的数据请求控制策略,减少了不必要的数据请求。这不仅进一步节约了用户的流量和减少了等待时间,也优化了网络资源的使用,从而减少了服务器的压力和提高了终端设备的电池续航。这种策略的实施使得车控App能够在各种网络条件下运行得更加高效和稳定。
总体来说,本申请技术方案通过上述技术效果的实现,大幅提升了车控App在网络请求方面的性能,优化了用户体验,并且实现了流量和时间的双重节省。这些优化措施对于提升车控App在实际使用中的可靠性和用户满意度至关重要。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6是本申请实施例提供的车控应用程序的网络请求优化装置的结构示意图。如图6所示,该车控应用程序的网络请求优化装置包括:
统一解析模块601,被配置为在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;
握手优化模块602,被配置为利用预定的握手优化策略,优化应用程序与网络服务的握手时间,其中握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;
网络请求模块603,被配置为根据当前设备连接的网络类型,选择与网络类型相对应的网络请求策略,其中网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;
动态调整模块604,被配置为创建网络请求队列,根据网络状况将网络请求加入相应的网络请求队列中,根据网络状态变化动态调整网络请求队列的执行,并利用队列管理技术对网络请求队列进行组织;
下载策略模块605,被配置为实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;
数据刷新模块606,被配置为当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
在一些实施例中,图6的统一解析模块601将预期访问的网络服务的接口关联到预设数量的域名下,其中将初始化服务接口统一配置到一个主域名下;将数据和资源提供接口统一到主域名或限制在预设数量的域名下;实行域名连接策略,在应用程序的启动阶段,对关键服务的主域名进行即时DNS解析,对非即时性的服务或资源接口的子域名,提前进行DNS查询并缓存结果。
在一些实施例中,图6的握手优化模块602实行连接数量控制策略,对相同域名的请求进行合并,并对不同服务的连接策略进行优化,以降低网络连接数量;在网络请求完成后,在网络请求的头部设置持久连接标志,保持网络连接处于打开状态,以使同一网络连接被后续的网络请求重复利用;基于域分片技术,将不同的网络请求分散到相同IP地址的不同子域名上,以便将来自相同IP地址且不同子域名的网络请求通过单一物理连接进行并行处理。
在一些实施例中,图6的网络请求模块603当设备连接至第一网络类型时,执行数据密集型的下载和缓存策略,以便进行大规模的缓存数据下载;当设备连接至第二网络类型时,执行控制数据下载量策略,控制应用程序下载关键资源,并使资源大小与展示需求相匹配,对常规数据接口进行正常处理;当设备连接至第三网络类型时,执行优先使用离线数据策略,控制应用程序下载压缩数据或禁止下载数据,并优先使用已缓存的离线数据,当切换到第一网络类型或第二网络类型时,将暂存队列中的请求按优先级处理。
在一些实施例中,图6的动态调整模块604根据应用程序的网络请求和业务需求,创建多个网络请求队列,其中网络请求队列包括资源请求队列和关键数据请求队列;开发并部署发起网络函数,发起网络函数用于根据当前的网络状况动态分配网络请求至相应的网络请求队列中:其中,当检测到设备处于无网或弱网的状态时,发起网络函数根据网络请求的来源,将网络请求分配至资源请求队列或关键数据请求队列中,并暂缓执行;当检测到设备处于有网或强网的状态时,利用发起网络函数激活网络请求队列,以执行网络请求队列中的请求。
在一些实施例中,图6的动态调整模块604实施网络类型划分及变化检测,对实时网络状态进行监控,并根据预设的网络状态类别动态调整网络请求队列的活动状态,以便在网络状态变化时,根据预设优先级管理网络请求队列的请求处理;根据网络请求的优先级,利用大根堆算法对网络请求处理顺序进行优化,并实施操作合批策略,将相似的网络请求合并为一个批量请求。
在一些实施例中,图6的下载策略模块605对于流媒体内容,利用自适应比特率流媒体技术或HTTP实时流技术,依据当前网络条件动态调整下载速度;对于非流媒体内容,根据网络类型和数据量需求实施动态数据下载量策略;当网络请求失败时,利用指数回退方式对失败的网络请求进行重试,并为失败的网络请求设置最大重试次数或最大重试间隔。
在一些实施例中,图6的数据刷新模块606当用户请求数据刷新时,判断当前请求与上次成功请求之间的时间间隔是否小于预设时间阈值,若时间间隔小于时间阈值,则对当前请求的发送进行延迟或取消,否则执行数据刷新。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图7是本申请实施例提供的电子设备7的结构示意图。如图7所示,该实施例的电子设备7包括:处理器701、存储器702以及存储在该存储器702中并且可以在处理器701上运行的计算机程序703。处理器701执行计算机程序703时实现上述各个方法实施例中的步骤。或者,处理器701执行计算机程序703时实现上述各装置实施例中各模块/单元的功能。
示例性地,计算机程序703可以被分割成一个或多个模块/单元,一个或多个模块/单元被存储在存储器702中,并由处理器701执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序703在电子设备7中的执行过程。
电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备7可以包括但不仅限于处理器701和存储器702。本领域技术人员可以理解,图7仅仅是电子设备7的示例,并不构成对电子设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如,电子设备还可以包括输入输出设备、网络接入设备、总线等。
处理器701可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器702可以是电子设备7的内部存储单元,例如,电子设备7的硬盘或内存。存储器702也可以是电子设备7的外部存储设备,例如,电子设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器702还可以既包括电子设备7的内部存储单元也包括外部存储设备。存储器702用于存储计算机程序以及电子设备所需的其它程序和数据。存储器702还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种车控应用程序的网络请求优化方法,其特征在于,包括:
在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;
利用预定的握手优化策略,优化所述应用程序与网络服务的握手时间,其中所述握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;
根据当前设备连接的网络类型,选择与所述网络类型相对应的网络请求策略,其中所述网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;
创建网络请求队列,根据网络状况将所述网络请求加入相应的网络请求队列中,根据网络状态变化动态调整所述网络请求队列的执行,并利用队列管理技术对所述网络请求队列进行组织;
实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;
当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
2.根据权利要求1所述的方法,其特征在于,所述将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析,包括:
将预期访问的网络服务的接口关联到预设数量的域名下,其中将初始化服务接口统一配置到一个主域名下;将数据和资源提供接口统一到所述主域名或限制在预设数量的域名下;
实行域名连接策略,在所述应用程序的启动阶段,对关键服务的主域名进行即时DNS解析,对非即时性的服务或资源接口的子域名,提前进行DNS查询并缓存结果。
3.根据权利要求1所述的方法,其特征在于,所述利用预定的握手优化策略,优化所述应用程序与网络服务的握手时间,包括:
实行连接数量控制策略,对相同域名的请求进行合并,并对不同服务的连接策略进行优化,以降低网络连接数量;
在网络请求完成后,在所述网络请求的头部设置持久连接标志,保持网络连接处于打开状态,以使同一网络连接被后续的网络请求重复利用;
基于所述域分片技术,将不同的网络请求分散到相同IP地址的不同子域名上,以便将来自相同IP地址且不同子域名的网络请求通过单一物理连接进行并行处理。
4.根据权利要求1所述的方法,其特征在于,所述根据当前设备连接的网络类型,选择与所述网络类型相对应的网络请求策略,包括:
当设备连接至第一网络类型时,执行所述数据密集型的下载和缓存策略,以便进行大规模的缓存数据下载;
当设备连接至第二网络类型时,执行所述控制数据下载量策略,控制所述应用程序下载关键资源,并使资源大小与展示需求相匹配,对常规数据接口进行正常处理;
当设备连接至第三网络类型时,执行所述优先使用离线数据策略,控制所述应用程序下载压缩数据或禁止下载数据,并优先使用已缓存的离线数据,当切换到所述第一网络类型或所述第二网络类型时,将暂存队列中的请求按优先级处理。
5.根据权利要求1所述的方法,其特征在于,所述创建网络请求队列,根据网络状况将所述网络请求加入相应的网络请求队列中,包括:
根据所述应用程序的网络请求和业务需求,创建多个所述网络请求队列,其中所述网络请求队列包括资源请求队列和关键数据请求队列;
开发并部署发起网络函数,所述发起网络函数用于根据当前的网络状况动态分配网络请求至相应的网络请求队列中:
其中,当检测到设备处于无网或弱网的状态时,所述发起网络函数根据所述网络请求的来源,将所述网络请求分配至资源请求队列或关键数据请求队列中,并暂缓执行;当检测到设备处于有网或强网的状态时,利用所述发起网络函数激活所述网络请求队列,以执行所述网络请求队列中的请求。
6.根据权利要求1所述的方法,其特征在于,所述根据网络状态变化动态调整所述网络请求队列的执行,并利用队列管理技术对所述网络请求队列进行组织,包括:
实施网络类型划分及变化检测,对实时网络状态进行监控,并根据预设的网络状态类别动态调整网络请求队列的活动状态,以便在网络状态变化时,根据预设优先级管理网络请求队列的请求处理;根据所述网络请求的优先级,利用大根堆算法对网络请求处理顺序进行优化,并实施操作合批策略,将相似的网络请求合并为一个批量请求。
7.根据权利要求1所述的方法,其特征在于,所述实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理,包括:
对于流媒体内容,利用自适应比特率流媒体技术或HTTP实时流技术,依据当前网络条件动态调整下载速度;对于非流媒体内容,根据网络类型和数据量需求实施动态数据下载量策略;当所述网络请求失败时,利用指数回退方式对所述失败的网络请求进行重试,并为所述失败的网络请求设置最大重试次数或最大重试间隔。
8.根据权利要求1所述的方法,其特征在于,所述当触发数据刷新操作时,执行预定的数据刷新策略,包括:
当用户请求数据刷新时,判断当前请求与上次成功请求之间的时间间隔是否小于预设时间阈值,若所述时间间隔小于所述时间阈值,则对所述当前请求的发送进行延迟或取消,否则执行数据刷新。
9.一种车控应用程序的网络请求优化装置,其特征在于,包括:
统一解析模块,被配置为在应用程序启动时,将预期访问的网络服务的接口统一到预定域名下,并提前对后续被请求的子域名进行DNS预解析;
握手优化模块,被配置为利用预定的握手优化策略,优化所述应用程序与网络服务的握手时间,其中所述握手优化策略包括控制网络连接的数量,持久化网络连接以及域分片技术;
网络请求模块,被配置为根据当前设备连接的网络类型,选择与所述网络类型相对应的网络请求策略,其中所述网络请求策略包括数据密集型的下载和缓存策略,控制数据下载量策略以及优先使用离线数据策略;
动态调整模块,被配置为创建网络请求队列,根据网络状况将所述网络请求加入相应的网络请求队列中,根据网络状态变化动态调整所述网络请求队列的执行,并利用队列管理技术对所述网络请求队列进行组织;
下载策略模块,被配置为实行数据分布拉取策略,以便根据数据类型和网络条件选择合适的下载策略,在网络请求失败时,基于延迟重试策略对失败的网络请求进行处理;
数据刷新模块,被配置为当触发数据刷新操作时,执行预定的数据刷新策略,并实行客户端数据缓存策略,在客户端对非即时性更新的数据进行离线缓存和逻辑处理,并在检测到网络状态达到预设条件时,将离线数据同步更新至服务器。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
CN202410362878.3A 2024-03-28 2024-03-28 车控应用程序的网络请求优化方法、装置及存储介质 Pending CN118316956A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410362878.3A CN118316956A (zh) 2024-03-28 2024-03-28 车控应用程序的网络请求优化方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410362878.3A CN118316956A (zh) 2024-03-28 2024-03-28 车控应用程序的网络请求优化方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN118316956A true CN118316956A (zh) 2024-07-09

Family

ID=91724879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410362878.3A Pending CN118316956A (zh) 2024-03-28 2024-03-28 车控应用程序的网络请求优化方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN118316956A (zh)

Similar Documents

Publication Publication Date Title
US11611607B2 (en) System providing faster and more efficient data communication
US10447775B2 (en) System and method to balance servers based on server load status
CN110198307B (zh) 一种移动边缘计算节点的选择方法、装置及系统
EP1921871B1 (en) A method and download agent for downloading in parallel
US20180205976A1 (en) Method and apparatus of obtaining video fragment
US20190155665A1 (en) Methods and systems for providing application programming interfaces and application programming interface extensions to third party applications for optimizing and minimizing application traffic
CN109672612A (zh) Api网关系统
US10771533B2 (en) Adaptive communication control device
US9686373B2 (en) Connection cache method and system
CN102164117B (zh) 使用代理设备的视频转码
CN108718347B (zh) 一种域名解析方法、系统、装置及存储介质
KR20090101055A (ko) 콘텐츠 푸시 서비스
US11316916B2 (en) Packet processing method, related device, and computer storage medium
CN110677475A (zh) 一种微服务处理方法、装置、设备及存储介质
US8775456B2 (en) System and method for scheduled and collaborative distribution of software and data to many thousands of clients over a network using dynamic virtual proxies
US9755897B1 (en) Enhanced throttle management system
CN109600436B (zh) 一种分布式iscsi服务实现方法、系统及相关装置
WO2020252724A1 (zh) 日志处理方法、设备及计算机可读存储介质
US20020138613A1 (en) Follow-up notification of availability of requested application service and bandwidth between client (s) and server (s) over any network
CN118316956A (zh) 车控应用程序的网络请求优化方法、装置及存储介质
CN107483637B (zh) 一种基于nfs的客户端链接管理方法及装置
EP2515535A1 (en) Method and set top box for acquiring program content
US10728291B1 (en) Persistent duplex connections and communication protocol for content distribution
US20120307635A1 (en) Wireless optimized content delivery network
US20100057914A1 (en) Method, apparatus and system for scheduling contents

Legal Events

Date Code Title Description
PB01 Publication