CN114745272A - 用于提高应用程序启动速度的方法、服务器、介质及设备 - Google Patents
用于提高应用程序启动速度的方法、服务器、介质及设备 Download PDFInfo
- Publication number
- CN114745272A CN114745272A CN202011546199.XA CN202011546199A CN114745272A CN 114745272 A CN114745272 A CN 114745272A CN 202011546199 A CN202011546199 A CN 202011546199A CN 114745272 A CN114745272 A CN 114745272A
- Authority
- CN
- China
- Prior art keywords
- current network
- request
- domain name
- network request
- connection
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/083—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种用于提高应用程序启动速度的方法、服务器、介质及设备,方法包括:获取用于启动目标APP的当前网络请求序列,确定当前网络请求序列中多个当前网络请求的第一优先级;获得每个域名对应的当前网络请求集合;确定每个IP的第二优先级;确定至少一个当前网络请求对应的第一请求时长,基于第一请求时长为每个域名创建对应的线程;在对应的线程中,基于第一优先级及第二优先级为至少一个当前网络请求创建网络连接;如此,在同一线程中为同一域名的当前网络请求创建网络连接,减少线程切换时间;利用连接质量较好的IP创建网络连接,提高连接速度;为每个域名合理创建相应数量的线程,提高并行处理能力,提高APP启动速度。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种用于提高应用程序启动速度的方法、服务器、介质及设备。
背景技术
对于终端上的应用程序(APP,Application)来说,APP启动速度越快,用户的体验效果越好。在APP启动时,会产生100个左右的网络请求,而这些网络请求是影响APP启动速度的关键因素。
现有技术中,一般是通过开发人员在APP开发过程中对每个网络请求设定固定的优先级来确保启动速度。但是在实际运行中,由于每个用户的操作行为并不是一致的,那么每个用户所需要用的网络请求也并不一致,导致APP的启动速度并不能得到实质的优化。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种用于提高应用程序启动速度的方法、服务器、介质及设备,用于解决现有技术中在启动APP时,通过设置固定优先级来进行网络请求,导致APP启动速度得不到确保的技术问题。
本发明提供一种用于提高应用程序启动速度的方法,所述方法包括:
针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;
针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;
针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
可选的,所述确定所述当前网络请求序列中多个当前网络请求的第一优先级,包括:
基于用户的历史操作行为,获取多个历史网络请求的请求顺序;
基于所述请求顺序为每个所述历史网络请求设定对应的参考优先级;
基于所述参考优先级确定每个所述当前网络请求的第一优先级,所述历史网络请求与所述当前网络请求一致。
可选的,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,包括:
针对任一域名,获得所述域名对应的IP配置表,所述IP配置表中存储有每个IP的标识及对应的连接分值;所述连接分值基于各所述IP的历史连接成功率确定的;
针对目标IP,从所述IP配置表中查找所述目标IP,获得所述目标IP对应的连接分值;所述目标IP为所述IP中的任一IP;
基于所述连接分值确定各所述IP的第二优先级。
可选的,所述确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,包括:
针对任一当前网络请求集合中的任一当前网络请求,获取所述当前网络请求所需要传输的第一历史数据量;
根据公式Time=DataSize/K*OneTime确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长Time;其中,DataSize为所述第一历史数据量,所述K为每个数据包传输的最大数据量,所述OneTime每个所述数据包的传输时长。
可选的,所述基于所述第一请求时长为每个域名创建对应的线程,包括:
基于所述第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若所述当前网络集合包括有一个所述当前网络请求时,基于公式ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)确定所述当前网络请求集合对应域名的线程数量ThreadNum1;其中,TimeQueue[x]为所述当前网络集合中当前网络请求x对应的第一请求时长,所述TotalTime为所述总请求时长,所述N为可使用的线程数量。
可选的,所述基于所述第一请求时长为每个域名创建对应的线程,包括:
基于所述第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若所述当前网络集合包括有至少两个所述当前网络请求时,基于公式ThreadNum2=max(1,(TimeQueue/TotalTime)*N)确定所述当前网络请求集合对应域名的线程数量ThreadNum2;其中,TimeQueue为所述当前网络请求集合对应的第二请求时长,所述TotalTime为所述总请求时长,所述N为可使用的线程数量。
可选的,所述基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求进行连接,包括:
基于所述第一优先级确定对应当前网络请求集合中的当前网络请求的待连接顺序;
基于所述待连接顺序,利用优先级最高的IP依次为每个所述当前网络请求创建网络连接。
本发明还提供一种服务器,所述服务器包括:
获取单元,用于针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
确定单元,用于针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
创建单元,用于确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的方法。
本发明提供了一种用于提高应用程序启动速度的方法、服务器、介质及设备,方法包括:针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接;如此,针对任一目标终端的目标APP,当接收到用于启动目标APP的指令时,首先对获取到的当前网络请求序列进行优先级排序,以能匹配用户的启动操作顺序;然后对优先级排序后的当前网络请求按照域名进行归类,确保属于同一域名的当前网络请求在一个当前网络请求集合中,尽可能地在同一线程中为同一域名的当前网络请求创建网络连接,减少线程切换时间,进而降低当前网络请求的耗时,提高启动速度;并且因域名下包含有多个IP,每个IP的连接质量不同,因此根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,确保可以利用连接质量较好的IP为当前网络请求创建网络连接,提高连接速度;同时,因每个当前网络请求的时长是不同的,因此根据第一请求时长为每个域名创建对应的线程,为每个域名合理创建相应数量的线程,提高并行处理能力,进一步提高APP的启动速度。
附图说明
图1为本发明实施例提供的用于提高应用程序启动速度的方法流程示意图;
图2为本发明实施例提供的用于提高应用程序启动速度的服务器结构示意图;
图3为本发明实施例提供的用于提高应用程序启动速度的计算机设备结构示意图;
图4为本发明实施例提供的用于提高应用程序启动速度的计算机介质结构示意图。
具体实施方式
为了解决现有技术中在启动APP时,通过设置固定优先级来进行网络请求,导致APP启动速度得不到确保的技术问题,本发明提供了一种用于提高应用程序启动速度的方法、服务器、介质及设备。
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
本实施例提供一种用于提高应用程序启动速度的方法,应用在服务器,如图1所示,方法包括:
S110,针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;
这里,为了可以为各个目标终端定制化独有的启动策略,在获取用于启动目标APP的当前网络请求序列之前,针对任一目标终端,获取目标终端的CPU线程核数,便于后续对线程的创建。
举例来说,当APP启动时,网络请求的数量较多,因此在不影响终端性能的前提下,本实施例希望尽可能地多创建线程来执行创建网络请求连接的任务。因此需要获取目标终端的CPU线程核数,可以将70%左右的线程数量用于执行创建网络请求连接的任务,剩余数量的线程用于其他任务的执行。
针对目标终端的目标APP,当获取到由用户发送的启动指令时,此时会存在多个当前网络请求,那么可以获取到用于于启动目标APP的当前网络请求序列,并确定当前网络请求序列中多个当前网络请求的第一优先级。
由于用户的行为习惯的一致性,用户在每次启动APP时,对APP页面的操作顺序差不多也是一致的。因此在用户的历史操作中,可以基于历史操作行为获取历史启动路径、配置信息、历史操作路径以及历史网络请求等,并这些历史数据存储在预设的缓存空间中。这样,即使每次用户在启动APP的操作有不同,也会将不同的操作记录下来。
并且,在目标APP历史使用过程中,还可以获取目标APP在历史使用过程中加载的图片数据(比如广告图片);将图片数据缓存至目标终端的存储空间中。这样,当再次启动目标APP时,可以直接从存储空间中加载相应的图片数据,无需再从服务器下载图片数据,降低加载图片的耗时,提高APP的启动速度。
基于此,作为一种可选的实施例,确定当前网络请求序列中多个当前网络请求的第一优先级,包括:
基于用户的历史操作行为,获取多个历史网络请求的请求顺序;
基于请求顺序为每个历史网络请求设定对应的参考优先级;
基于参考优先级确定每个当前网络请求的第一优先级,历史网络请求与当前网络请求一致。
具体的,可以基于用户的历史操作行为(行为习惯)确定历史网络请求的先后顺序,那么参考优先级可以根据历史网络请求的先后顺序确定,历史网络请求的顺序在前,参考优先级会高;历史网络请求的顺序在后,参考优先级会低。这样最终形成一个历史网络请求序列;比如可以为Queue1[req1,req2,req3,.......reqn],其中req1,req2,req3……reqn为历史网络请求。
值得注意的是,有些历史网络请求是具有关联性的,具有关联性的历史网络请求的参考优先级是相同的,也即具有关联性的历史网络请求在历史请求网络序列的顺序标识是相同的。比如:进入APP的首页后,会获取当前页面的展示所需要的信息,从而会产生网络请求,而这个网络请求会需要和其他几个网络请求的数据关联才能够完整的展示页面信息。
当获取到当前网络请求时,由于历史网络请求与当前网络请求基本时一致的,因此可以根据历史网络请求的参考优先级确定当前网络的第一优先级。
本步骤中通过用户的历史操作行为确定出历史网络请求的先后顺序,进而根据历史网络请求的参考优先级确定当前网络请求的第一优先级,以预测并匹配用户的当前启动操作顺序,减少客户端与服务器之间的交互响应时长,提高目标APP的启动速度。
S111,针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
在当前网络请求序列中,当前网络请求序列中的各当前网络请求已经按照第一优先级进行了排序。而对于属于同一个域名的当前网络请求来说,可以通过复用该域名下的IP连接创建网络请求,以减少DNS的解析时长和TCP的连接时长。
因此,针对任一当前网络请求,确定当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;当前网络请求集合包括至少一个当前网络请求。
举例来说,若当前网络请求与历史网络请求一致,假设当前网络请求序列中的当前网络请求包括:req1、req2、req3、req4、req5和req6;req1和req6的域名均为A,req2、req3、req4的域名均为B,req4、req5的域名均为C;那么当前网络请求集合包括3个,A域名对应的当前网络请求集合为[req1,req6],B域名对应的当前网络请求集合为[req2,req3,req4],C域名对应的当前网络请求集合为[req4,req5]。
这样,可以确定出不同域名对应的当前网络请求集合,对于同一个域名的当前网络请求来说,可以通过复用该域名下的IP连接创建网络请求,减少DNS的解析时长和TCP的连接时长,提高APP的启动速度。
S112,针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
一般来说,需要为网络请求创建网络连接时,需要基于网络协议IP连接为网络请求创建网络连接。
因此本实施例针对每个域名,需要对域名(DNS)进行解析,获得该域名下的所有IP。当然,本实施例考虑到解析时长也会影响APP的启动速度,也可以在目标APP的历史启动过程中,获取每个域名下的IP,并基于解析到的IP生成一份IP配置表,IP配置表中包括有每个域名的名称以及每个域名下所有IP的IP标识(比如IP地址)。值得注意的是,在不同的网络连接类型中,IP配置表是不同的;因此本实施例针在不同的网络连接类型下,生成的IP配置表是不同的;其中,网络连接类型包括:WIFI、4G/5G。
这样,若接收到用于启动目标APP的当前指令时,可以基于当前网络连接类型获取对应的IP配置表,基于IP配置表直接获取到每个域名下的所有IP。
由于每个域名下各IP的连接质量是不同的,为了确保连接速度,需要选用连接质量较高的IP为网络请求创建网络连接。因此本实施例生成IP配置表之后,针对每个域名,还需确定出该域名下所有IP的连接质量。
作为一种可选的实施例,针对同一个域名的所有IP,在当前次启动目标APP之前的测试周期内(比如当前次启动目标APP之前的一个月,或者当前次启动目标APP之前的100次),统计测试周期内该域名下的历史网络请求连接成功时所使用的IP,按照使用频率确定各IP的连接质量。
举例来说,对于域名为A来说,域名A下包含的历史网络请求为req1和req6,该域名A下包含的IP为:IP1、IP2和IP3。在测试周期内,IP1的使用频率为100次,IP2的使用频率为80次,IP3的使用频率为85次。因此域名A下的各IP的连接质量从高至低为:IP1、IP3和IP2。
作为一种可选的实施例,在确定该域名下所有IP的连接质量时,还可以包括:
同样的,针对同一个域名的所有IP,为所有IP设置一个基础分值,每个IP的基础分值相同。在当前次启动目标APP之前的测试周期内(比如当前次启动目标APP之前的一个月,或者当前次启动目标APP之前的100次)对该域名下的IP进行测试,基于连接分值确定各IP的连接质量,连接分值基于各IP的历史连接成功率确定的。
具体的,当目标APP启动时,按照预设的连接周期对某一个当前IP进行测试连接,若当前IP在连接周期内连接成功,则在当前IP的基础分值加一分,并停止测试。若IP在连接周期内连接失败或没有返回测试结果,则直接断开当前IP,在当前IP的基础分值减一分,并按照同样的方法继续对当前IP的下一IP进行测试。
举例来说,假设该域名A下包含的IP为:IP1、IP2和IP3,在某一次测试过程中(启动时),若IP1连接成功,则为IP1的基础分值加一分,此时考虑到启动速率,不会对IP2、IP3进行测试。但是若IP1在连接周期内连接失败或没有返回连接结果,则为IP1的基础分值减一分,此时继续对IP2进行测试。
或者,当目标APP启动成功后,按照预设的连接周期对某一个当前IP进行测试连接,若当前IP在连接周期内连接成功,则在当前IP的基础分值加一分;此时会断开当前IP的连接,继续对当前IP的下一IP进行测试,直至该域名下的所有IP均测试完毕。同样的,当IP连接成功之后,会为基础分值加一分。
举例来说,假设该域名A下包含的IP为:IP1、IP2和IP3,在某一次测试过程中,若IP1连接成功,则为IP1的基础分值加一分,此但是若IP1在连接周期内连接失败或没有返回连接结果,则为IP1的基础分值减一分。然后按照同样的方法对IP2和IP3进行测试,并记录对应的分值。
最后根据各IP的连接分值确定各IP的连接质量,那么IP配置表中就包括有每个域名、各域名下所有的IP标识以及每个IP的连接分值。值得注意的是,每次APP启动之后,各IP的连接分值可能会有变化,那么IP配置表也是不断在动态更新的,以能为下一次APP的启动提供精准的数据参考。
应说明的是,为了可以在预设的时长内尽可能多的去测试不同的IP,得到更多的数据,为后续提供最优的启动选择,本实施例需要设置IP间隔对各IP进行测试(比如可以设置为3~4s);这样也能避免多个ip同时连接服务器导致服务器的处理负担增加。
因在实际测试过程中,每个IP所需的测试时长是不同的,因此本实施例还设置测试时长的最大保护时间及最小保护时间,然后根据最大保护时间及最小保护时间确定实际的测试时长,以避免IP在连接失败时一直请求连接,导致测试的IP数量降低。代码实现如下:
std::chrono::milliseconds kMinConnectT ime_{3000ms};最小保护时间
std::chrono::milliseconds kMaxConnectTime_{30000ms};最大保护时间
std::chrono::milliseconds interval_{4000ms};
每个IP的超时时长确定如下:
进一步地,还可以确定出每个IP连接失败的时间点:
各IP的连接质量确定出之后,本实施例针对每个域名,根据该域名下各IP的连接质量确定每个IP的第二优先级,以能在一次APP的启动过程中利用IP创建网络连接时,可以选用按照优先级选择IP来创建网络连接。
作为一种可选的实施例,根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,包括:
针对任一域名,获得域名对应的IP配置表,所述IP配置表中存储有每个IP的标识及对应的连接分值;所述连接分值基于各所述IP的历史连接成功率确定的;
针对目标IP,从IP配置表中查找目标IP,获得目标IP对应的连接分值;目标IP为该域名下所有IP中的任一IP;
基于连接分值确定各IP的第二优先级。
本实施例通过各IP的历史连接测试数据确定每个域名下各个IP的优先级,为当前次APP启动时选择IP提供参考,以能根据优先级选择最优的IP来创建网络连接,提高连接速度,进而提高APP的启动速度。
S113,确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;
一般情况下,考虑到线程切换也需要耗费时间,因此同一域名下的当前网络请求一般使用同一个线程,在同一线程中为同一域名的当前网络请求创建网络连接,以减少线程切换时间,进而降低当前网络请求的耗时,提高启动速度。但是由于一个线程同一时间只能服务于一个网络创建任务(同一域名下的网络请求需要排队使用线程),考虑的任务的耗时因素,当一个域名中有多个当前网络请求时,为了可以最合理地为每个域名创建线程,需要确定每个当前网络请求集合中至少一个当前网络请求的第一请求时长,基于第一请求时长为每个域名创建对应的线程。
作为一种可选的实施例,确定每个当前网络请求集合中至少一个当前网络请求的第一请求时长,包括:
针对任一当前网络请求集合中的任一当前网络请求,获取当前网络请求所需要传输的第一历史数据量;
根据公式Time=DataSize/K*OneTime确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长Time;其中,DataSize为第一历史数据量,K为每个数据包传输的最大数据量,OneTime每个数据包的传输时长,OneTime基于历史传输时长确定。每个数据包传输的最大数据量是根据经验预设的,比如TCP传输的一个数据包大小为1400个字节。
作为一种可选的实施例,基于第一请求时长为每个域名创建对应的线程,包括:
基于第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若当前网络集合包括有一个当前网络请求时,基于公式ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)确定域名对应的线程数量ThreadNum1;其中,TimeQueue[x]为当前网络集合中当前网络请求x对应的第一请求时长,TotalTime为总请求时长,N为可使用的线程数量。
具体的,针对每个域名,当该域名下所有的当前网络请求的第一请求时长确定出之后,可以根据第一请求时长确定该当前网络请求所需要的第二请求时长,第二请求时长为各第一请求时长的总和。
各第二请求时长确定出之后,可以根据各第二请求时长确定总请求时长,总请求时长为各第二请求时长的总和。
举例来说,假设域名A域名对应的当前网络请求集合为[req1],req1对应的第一请求时长为0.3s,TotalTime为5s,N为10;那么ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)=min(1,0.6),那么此时无需为A域名创建线程,等待其他域名对应的线程执行完毕之后再来执行A域名下的请求。
作为一种可选的实施例,基于所述第一请求时长为每个域名创建对应的线程,包括:
基于第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若当前网络集合包括有至少两个所述当前网络请求时,基于公式ThreadNum2=max(1,(TimeQueue/TotalTime)*N)确定域名对应的线程数量ThreadNum2;其中,TimeQueue为当前网络请求集合对应的第二请求时长,N为可使用的线程数量。
举例来说,假设域名A域名对应的当前网络请求集合为[req1,req6],req1对应的第一请求时长为0.3s,req2对应的第一请求时长为0.8s,TotalTime为5s,N为10;那么ThreadNum2=max(1,((TimeQueue/TotalTime)*N)=max(1,2.2),那么此需为A域名创建2个线程。
本实施例中,基于各当前网络请求集合实际的耗时为对应的域名创建合理数量的线程,以能在最短的时间内处理网络连接任务,提高连接速度,进而提高APP的启动速度。
S114,针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
当为各域名创建对应的线程后,在线程中执行网络连接时,需要用到域名的IP进行连接。为了确保连接速度,那么可以基于第一优先级及第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
作为一种可选的实施例,基于第一优先级及第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接,包括:
基于第一优先级确定对应当前网络请求集合中的当前网络请求的待连接顺序;
基于所述待连接顺序,利用优先级最高的IP依次为每个所述当前网络请求创建网络连接。
举例来说,针对域名A,A域名对应的当前网络请求集合为[req1,req6],req1的第一优先级高于req6的第一优先级,若域名A只有一个线程,此时需要先为req1创建网络连接。
在利用该域名的IP进行网络连接时,当域名A中包含有IP1、IP2,此时需要利用优先级最高的IP1为req1创建网络连接,当req1的网络连接创建成功之后,还需要利用优先级最高的IP1为req2创建网络连接。
进一步地,当域名A有两个线程时,此时可以同时在第一个线程中利用IP1为req1创建网络连接,在第二个线程中利用IP2为req2创建网络连接。
本实施例中,因域名下包含有多个IP,每个IP的连接质量不同,因此根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,确保可以利用连接质量较好的IP为当前网络请求创建网络连接,提高连接速度,进而提高APP启动速度。
本实施例提供的于提高应用程序启动速度的方法,针对任一目标终端的目标APP,当接收到用于启动目标APP的指令时,首先对获取到的当前网络请求序列进行优先级排序,以能匹配用户的启动操作顺序;然后对优先级排序后的当前网络请求按照域名进行归类,确保属于同一域名的当前网络请求在一个当前网络请求集合中,尽可能地在同一线程中为同一域名的当前网络请求创建网络连接,减少线程切换时间,进而降低当前网络请求的耗时,提高启动速度;并且因域名下包含有多个IP,每个IP的连接质量不同,因此根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,确保可以利用连接质量较好的IP为当前网络请求创建网络连接,提高连接速度;同时,因每个当前网络请求的时长是不同的,因此根据第一请求时长为每个域名创建对应的线程,为每个域名合理创建相应数量的线程,提高并行处理能力,进一步提高APP的启动速度。
基于同样的发明构思,本发明还提供一种用于提高应用程序启动速度的服务器,详见实施例二。
实施例二
本实施例提供一种用于提高应用程序启动速度的服务器,如图2所示,服务器包括:获取单元21、确定单元22及创建单元23;
获取单元21,用于针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
确定单元22,用于针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
创建单元23,用于确定每个当前网络请求集合中至少一个当前网络请求的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
这里,为了可以为各个目标终端定制化独有的启动策略,获取单元21在获取用于启动目标APP的当前网络请求序列之前,针对任一目标终端,获取目标终端的CPU线程核数,便于后续对线程的创建。
举例来说,当APP启动时,网络请求的数量较多,因此在不影响终端性能的前提下,本实施例希望尽可能地多创建线程来执行创建网络请求连接的任务。因此需要获取目标终端的CPU线程核数,可以将70%左右的线程数量用于执行创建网络请求连接的任务,剩余数量的线程用于其他任务的执行。
针对目标终端的目标APP,当获取单元21获取到由用户发送的启动指令时,此时会存在多个当前网络请求,那么可以获取到用于于启动目标APP的当前网络请求序列,并确定当前网络请求序列中多个当前网络请求的第一优先级。
由于用户的行为习惯的一致性,用户在每次启动APP时,对APP页面的操作顺序差不多也是一致的。因此在用户的历史操作中,可以基于历史操作行为获取历史启动路径、配置信息、历史操作路径以及历史网络请求等,并这些历史数据存储在预设的缓存空间中。这样,即使每次用户在启动APP的操作有不同,也会将不同的操作记录下来。
并且,在目标APP历史使用过程中,获取单元21还可以获取目标APP在历史使用过程中加载的图片数据(比如广告图片);将图片数据缓存至目标终端的存储空间中。这样,当再次启动目标APP时,可以直接从存储空间中加载相应的图片数据,无需再从服务器下载图片数据,降低加载图片的耗时,提高APP的启动速度。
基于此,作为一种可选的实施例,获取单元21确定当前网络请求序列中多个当前网络请求的第一优先级,包括:
基于用户的历史操作行为,获取多个历史网络请求的请求顺序;
基于请求顺序为每个历史网络请求设定对应的参考优先级;
基于参考优先级确定每个当前网络请求的第一优先级,历史网络请求与当前网络请求一致。
具体的,可以基于用户的历史操作行为(行为习惯)确定历史网络请求的先后顺序,那么参考优先级可以根据历史网络请求的先后顺序确定,历史网络请求的顺序在前,参考优先级会高;历史网络请求的顺序在后,参考优先级会低。这样最终形成一个历史网络请求序列;比如可以为Queue1[req1,req2,req3,.......reqn],其中req1,req2,req3……reqn为历史网络请求。
值得注意的是,有些历史网络请求是具有关联性的,具有关联性的历史网络请求的参考优先级是相同的,也即具有关联性的历史网络请求在历史请求网络序列的顺序标识是相同的。比如:进入APP的首页后,会获取当前页面的展示所需要的信息,从而会产生网络请求,而这个网络请求会需要和其他几个网络请求的数据关联才能够完整的展示页面信息。
当获取到当前网络请求时,由于历史网络请求与当前网络请求基本时一致的,因此可以根据历史网络请求的参考优先级确定当前网络的第一优先级。
本步骤中通过用户的历史操作行为确定出历史网络请求的先后顺序,进而根据历史网络请求的参考优先级确定当前网络请求的第一优先级,以预测并匹配用户的当前启动操作顺序,减少客户端与服务器之间的交互响应时长,提高目标APP的启动速度。
在当前网络请求序列中,当前网络请求序列中的各当前网络请求已经按照第一优先级进行了排序。而对于属于同一个域名的当前网络请求来说,可以通过复用该域名下的IP连接创建网络请求,以减少DNS的解析时长和TCP的连接时长。
因此,针对任一当前网络请求,确定单元22确定当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;当前网络请求集合包括至少一个当前网络请求。
举例来说,若当前网络请求与历史网络请求一致,假设当前网络请求序列中的当前网络请求包括:req1、req2、req3、req4、req5和req6;req1和req6的域名均为A,req2、req3、req4的域名均为B,req4、req5的域名均为C;那么当前网络请求集合包括3个,A域名对应的当前网络请求集合为[req1,req6],B域名对应的当前网络请求集合为[req2,req3,req4],C域名对应的当前网络请求集合为[req4,req5]。
这样,可以确定出不同域名对应的当前网络请求集合,对于同一个域名的当前网络请求来说,可以通过复用该域名下的IP连接创建网络请求,减少DNS的解析时长和TCP的连接时长,提高APP的启动速度。
一般来说,需要为网络请求创建网络连接时,需要基于网络协议IP连接为网络请求创建网络连接。
因此本实施例针对每个域名,需要对域名(DNS)进行解析,获得该域名下的所有IP。当然,本实施例考虑到解析时长也会影响APP的启动速度,也可以在目标APP的历史启动过程中,获取每个域名下的IP,并基于解析到的IP生成一份IP配置表,IP配置表中包括有每个域名的名称以及每个域名下所有IP的IP标识(比如IP地址)。值得注意的是,在不同的网络连接类型中,IP配置表是不同的;因此本实施例针在不同的网络连接类型下,生成的IP配置表是不同的;其中,网络连接类型包括:WIFI、4G/5G。
这样,若接收到用于启动目标APP的当前指令时,可以基于当前网络连接类型获取对应的IP配置表,基于IP配置表直接获取到每个域名下的所有IP。
由于每个域名下各IP的连接质量是不同的,为了确保连接速度,需要选用连接质量较高的IP为网络请求创建网络连接。因此本实施例生成IP配置表之后,针对每个域名,确定单元22还需确定出该域名下所有IP的连接质量。
作为一种可选的实施例,针对同一个域名的所有IP,在当前次启动目标APP之前的测试周期内(比如当前次启动目标APP之前的一个月,或者当前次启动目标APP之前的100次),统计测试周期内该域名下的历史网络请求连接成功时所使用的IP,按照使用频率确定各IP的连接质量。
举例来说,对于域名为A来说,域名A下包含的历史网络请求为req1和req6,该域名A下包含的IP为:IP1、IP2和IP3。在测试周期内,IP1的使用频率为100次,IP2的使用频率为80次,IP3的使用频率为85次。因此域名A下的各IP的连接质量从高至低为:IP1、IP3和IP2。
作为一种可选的实施例,确定单元22在确定该域名下所有IP的连接质量时,还可以包括:
同样的,针对同一个域名的所有IP,为所有IP设置一个基础分值,每个IP的基础分值相同。在当前次启动目标APP之前的测试周期内(比如当前次启动目标APP之前的一个月,或者当前次启动目标APP之前的100次)对该域名下的IP进行测试。
具体的,当目标APP启动时,按照预设的连接周期对某一个当前IP进行测试连接,若当前IP在连接周期内连接成功,则在当前IP的基础分值加一分,并停止测试。若IP在连接周期内连接失败或没有返回测试结果,则直接断开当前IP,在当前IP的基础分值减一分,并按照同样的方法继续对当前IP的下一IP进行测试。其中,预设的间隔周期可以为3~4s。
举例来说,假设该域名A下包含的IP为:IP1、IP2和IP3,在某一次测试过程中,若IP1连接成功,则为IP1的基础分值加一分,此时考虑到启动速率,不会对IP2、IP3进行测试。但是若IP1在连接周期内连接失败或没有返回连接结果,则为IP1的基础分值减一分,此时继续对IP2进行测试。
或者,当目标APP启动成功后,按照预设的连接周期对某一个当前IP进行测试连接,若当前IP在连接周期内连接成功,则在当前IP的基础分值加一分;此时会断开当前IP的连接,继续对当前IP的下一IP进行测试,直至该域名下的所有IP均测试完毕。同样的,当IP连接成功之后,会为基础分值加一分。
举例来说,假设该域名A下包含的IP为:IP1、IP2和IP3,在某一次测试过程中,若IP1连接成功,则为IP1的基础分值加一分,此但是若IP1在连接周期内连接失败或没有返回连接结果,则为IP1的基础分值减一分。然后按照同样的方法对IP2和IP3进行测试,并记录对应的分值。
最后根据各IP的连接分值确定各IP的连接质量,那么IP配置表中就包括有每个域名、各域名下所有的IP标识以及每个IP的连接分值。值得注意的是,每次APP启动之后,各IP的连接分值可能会有变化,那么IP配置表也是不断在动态更新的,以能为下一次APP的启动提供精准的数据参考。
应说明的是,为了可以在预设的时长内尽可能多的去测试不同的IP,得到更多的数据,为后续提供最优的启动选择,本实施例需要设置IP间隔对各IP进行测试(比如可以设置为3~4s);这样也能避免多个ip同时连接服务器导致服务器的处理负担增加。
因在实际测试过程中,每个IP所需的测试时长是不同的,因此本实施例还设置测试时长的最大保护时间及最小保护时间,然后根据最大保护时间及最小保护时间确定实际的测试时长,以避免IP在连接失败时一直请求连接,导致测试的IP数量降低。代码实现如下:
std::chrono::milliseconds kMinConnectT ime_{3000ms};最小保护时间
std::chrono::milliseconds kMaxConnectTime_{30000ms};最大保护时间
std::chrono::milliseconds interval_{4000ms};
每个IP的超时时长确定如下:
进一步地,还可以确定出每个IP连接失败的时间点:
各IP的连接质量确定出之后,本实施例针对每个域名,根据该域名下各IP的连接质量确定每个IP的第二优先级,以能在一次APP的启动过程中利用IP创建网络连接时,可以选用按照优先级选择IP来创建网络连接。
作为一种可选的实施例,确定单元22根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,包括:
针对任一域名,获得域名对应的IP配置表,所述IP配置表中存储有每个IP的标识及对应的连接分值;所述连接分值基于各所述IP的历史连接成功率确定的;
针对目标IP,从IP配置表中查找目标IP,获得目标IP对应的连接分值;目标IP为该域名下所有IP中的任一IP;
基于连接分值确定各IP的第二优先级。
本实施例通过各IP的历史连接测试数据确定每个域名下各个IP的优先级,为当前次APP启动时选择IP提供参考,以能根据优先级选择最优的IP来创建网络连接,提高连接速度,进而提高APP的启动速度。
一般情况下,考虑到线程切换也需要耗费时间,因此同一域名下的当前网络请求一般使用同一个线程,在同一线程中为同一域名的当前网络请求创建网络连接,以减少线程切换时间,进而降低当前网络请求的耗时,提高启动速度。但是由于一个线程同一时间只能服务于一个网络创建任务(同一域名下的网络请求需要排队使用线程),考虑的任务的耗时因素,当一个域名中有多个当前网络请求时,为了可以最合理地为每个域名创建线程,需要确定每个当前网络请求集合中至少一个当前网络请求的第一请求时长,基于第一请求时长为每个域名创建对应的线程。
作为一种可选的实施例,确定单元22确定每个当前网络请求集合中至少一个当前网络请求的第一请求时长,包括:
针对任一当前网络请求集合中的任一当前网络请求,获取当前网络请求所需要传输的第一历史数据量;
根据公式Time=DataSize/K*OneTime确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长Time;其中,DataSize为第一历史数据量,K为每个数据包传输的最大数据量,OneTime每个数据包的传输时长,OneTime基于历史传输时长确定。每个数据包传输的最大数据量是根据经验预设的,比如TCP传输的一个数据包大小为1400个字节。
作为一种可选的实施例,创建单元23基于第一请求时长为每个域名创建对应的线程,包括:
基于第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若当前网络集合包括有一个当前网络请求时,基于公式ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)确定域名对应的线程数量ThreadNum1;其中,TimeQueue[x]为当前网络集合中当前网络请求x对应的第一请求时长,TotalTime为总请求时长,N为可使用的线程数量。
具体的,针对每个域名,当该域名下所有的当前网络请求的第一请求时长确定出之后,可以根据第一请求时长确定该当前网络请求所需要的第二请求时长,第二请求时长为各第一请求时长的总和。
各第二请求时长确定出之后,可以根据各第二请求时长确定总请求时长,总请求时长为各第二请求时长的总和。
举例来说,假设域名A域名对应的当前网络请求集合为[req1],req1对应的第一请求时长为0.3s,TotalTime为5s,N为10;那么ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)=min(1,0.6),那么此时无需为A域名创建线程,等待其他域名对应的线程执行完毕之后再来执行A域名下的请求。
作为一种可选的实施例,创建单元23基于所述第一请求时长为每个域名创建对应的线程,包括:
基于第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若当前网络集合包括有至少两个所述当前网络请求时,基于公式ThreadNum2=max(1,(TimeQueue/TotalTime)*N)确定域名对应的线程数量ThreadNum2;其中,TimeQueue为当前网络请求集合对应的第二请求时长,N为可使用的线程数量。
举例来说,假设域名A域名对应的当前网络请求集合为[req1,req6],req1对应的第一请求时长为0.3s,req2对应的第一请求时长为0.8s,TotalTime为5s,N为10;那么ThreadNum2=max(1,((TimeQueue/TotalTime)*N)=max(1,2.2),那么此需为A域名创建2个线程。
本实施例中,基于各当前网络请求集合实际的耗时为对应的域名创建合理数量的线程,以能在最短的时间内处理网络连接任务,提高连接速度,进而提高APP的启动速度。
当为各域名创建对应的线程后,在线程中执行网络连接时,需要用到域名的IP进行连接。为了确保连接速度,那么可以基于第一优先级及第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
作为一种可选的实施例,创建单元23基于第一优先级及第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接,包括:
基于第一优先级确定对应当前网络请求集合中的当前网络请求的待连接顺序;
基于所述待连接顺序,利用优先级最高的IP依次为每个所述当前网络请求创建网络连接。
举例来说,针对域名A,A域名对应的当前网络请求集合为[req1,req6],req1的第一优先级高于req6的第一优先级,若域名A只有一个线程,此时需要先为req1创建网络连接。
在利用该域名的IP进行网络连接时,当域名A中包含有IP1、IP2,此时需要利用优先级最高的IP1为req1创建网络连接,当req1的网络连接创建成功之后,还需要利用优先级最高的IP1为req2创建网络连接。
进一步地,当域名A有两个线程时,此时可以同时在第一个线程中利用IP1为req1创建网络连接,在第二个线程中利用IP2为req2创建网络连接。
本实施例中,因域名下包含有多个IP,每个IP的连接质量不同,因此根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,确保可以利用连接质量较好的IP为当前网络请求创建网络连接,提高连接速度,进而提高APP启动速度。
本实施例提供的于提高应用程序启动速度的方法,针对任一目标终端的目标APP,当接收到用于启动目标APP的指令时,首先对获取到的当前网络请求序列进行优先级排序,以能匹配用户的启动操作顺序;然后对优先级排序后的当前网络请求按照域名进行归类,确保属于同一域名的当前网络请求在一个当前网络请求集合中,尽可能地在同一线程中为同一域名的当前网络请求创建网络连接,减少线程切换时间,进而降低当前网络请求的耗时,提高启动速度;并且因域名下包含有多个IP,每个IP的连接质量不同,因此根据域名下各网络协议IP的连接质量确定每个IP的第二优先级,确保可以利用连接质量较好的IP为当前网络请求创建网络连接,提高连接速度;同时,因每个当前网络请求的时长是不同的,因此根据第一请求时长为每个域名创建对应的线程,为每个域名合理创建相应数量的线程,提高并行处理能力,进一步提高APP的启动速度。
基于同样的发明构思,本发明还提供一种计算机设备,详见实施例三。
实施例三
本实施例提供一种计算机设备,如图3所示,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:
针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;
针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
确定每个当前网络请求集合中至少一个当前网络请求的对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;
针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
在具体实施过程中,处理器320执行计算机程序311时,可以实现实施例一中任一实施方式。
由于本实施例所介绍的计算机设备为实施本申请实施例一中一种用于提高应用程序启动速度的方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的计算机设备的具体实施方式以及其各种变化形式,所以在此对于该服务器如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。
实施例四
本实施例提供一种计算机可读存储介质400,如图4所示,其上存储有计算机程序411,该计算机程序411被处理器执行时实现以下步骤:
针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;
针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;
针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
在具体实施过程中,该计算机程序411被处理器执行时,可以实现实施例一中任一实施方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于提高应用程序启动速度的方法,其特征在于,所述方法包括:
针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;
针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;
针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
2.如权利要求1所述的方法,其特征在于,所述确定所述当前网络请求序列中多个当前网络请求的第一优先级,包括:
基于用户的历史操作行为,获取多个历史网络请求的请求顺序;
基于所述请求顺序为每个所述历史网络请求设定对应的参考优先级;
基于所述参考优先级确定每个所述当前网络请求的第一优先级,所述历史网络请求与所述当前网络请求一致。
3.如权利要求1所述的方法,其特征在于,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,包括:
针对任一域名,获得所述域名对应的IP配置表,所述IP配置表中存储有每个IP的标识及对应的连接分值;所述连接分值基于各所述IP的历史连接成功率确定的;
针对目标IP,从所述IP配置表中查找所述目标IP,获得所述目标IP对应的连接分值;所述目标IP为所述IP中的任一IP;
基于所述连接分值确定各所述IP的第二优先级。
4.如权利要求1所述的方法,其特征在于,所述确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,包括:
针对任一当前网络请求集合中的任一当前网络请求,获取所述当前网络请求所需要传输的第一历史数据量;
根据公式Time=DataSize/K*OneTime确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长Time;其中,DataSize为所述第一历史数据量,所述K为每个数据包传输的最大数据量,所述OneTime每个所述数据包的传输时长。
5.如权利要求1所述的方法,其特征在于,所述基于所述第一请求时长为每个域名创建对应的线程,包括:
基于所述第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若所述当前网络集合包括有一个所述当前网络请求时,基于公式ThreadNum1=min(1,(TimeQueue[x]/TotalTime)*N)确定所述当前网络请求集合对应域名的线程数量ThreadNum1;其中,TimeQueue[x]为所述当前网络集合中当前网络请求x对应的第一请求时长,所述TotalTime为所述总请求时长,所述N为可使用的线程数量。
6.如权利要求1所述的方法,其特征在于,所述基于所述第一请求时长为每个域名创建对应的线程,包括:
基于所述第一请求时长确定每个当前网络请求集合所需要的第二请求时长;
基于每个当前网络请求集合所需要的第二请求时长确定总请求时长;
若所述当前网络集合包括有至少两个所述当前网络请求时,基于公式ThreadNum2=max(1,(TimeQueue/TotalTime)*N)确定所述当前网络请求集合对应域名的线程数量ThreadNum2;其中,TimeQueue为所述当前网络请求集合对应的第二请求时长,所述TotalTime为所述总请求时长,所述N为可使用的线程数量。
7.如权利要求1所述的方法,其特征在于,所述基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求进行连接,包括:
基于所述第一优先级确定对应当前网络请求集合中的当前网络请求的待连接顺序;
基于所述待连接顺序,利用优先级最高的IP依次为每个所述当前网络请求创建网络连接。
8.一种服务器,其特征在于,所述服务器包括:
获取单元,用于针对目标终端的目标APP,获取用于启动所述目标APP的当前网络请求序列,确定所述当前网络请求序列中多个当前网络请求的第一优先级;针对任一当前网络请求,确定所述当前网络请求对应的域名,获得每个域名对应的当前网络请求集合;所述当前网络请求集合包括至少一个所述当前网络请求;
确定单元,用于针对每个所述域名,根据所述域名下各网络协议IP的连接质量确定每个所述IP的第二优先级,所述IP用于为当前网络请求创建网络连接;
创建单元,用于确定每个当前网络请求集合中至少一个当前网络请求对应的第一请求时长,基于所述第一请求时长为每个域名创建对应的线程;针对每个所述域名,在对应的线程中,基于所述第一优先级及所述第二优先级为对应当前网络请求集合中的至少一个当前网络请求创建网络连接。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至7任一项所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011546199.XA CN114745272B (zh) | 2020-12-23 | 2020-12-23 | 用于提高应用程序启动速度的方法、服务器、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011546199.XA CN114745272B (zh) | 2020-12-23 | 2020-12-23 | 用于提高应用程序启动速度的方法、服务器、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114745272A true CN114745272A (zh) | 2022-07-12 |
CN114745272B CN114745272B (zh) | 2023-09-15 |
Family
ID=82273764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011546199.XA Active CN114745272B (zh) | 2020-12-23 | 2020-12-23 | 用于提高应用程序启动速度的方法、服务器、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114745272B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060493A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Negotiated distribution of cache content |
US20060080486A1 (en) * | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Method and apparatus for prioritizing requests for information in a network environment |
US8893014B1 (en) * | 2012-06-28 | 2014-11-18 | Google Inc. | Deferred loading of a web page |
CN104182206A (zh) * | 2014-08-28 | 2014-12-03 | 北京京东尚科信息技术有限公司 | 一种数据转发方法 |
US20150200994A1 (en) * | 2012-05-29 | 2015-07-16 | Google Inc. | Preloading resources of a web page |
CN107766101A (zh) * | 2017-09-30 | 2018-03-06 | 五八有限公司 | App启动事件的处理方法、装置和设备 |
CN108512864A (zh) * | 2017-02-23 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 一种网络请求调度的方法及装置 |
US20200007453A1 (en) * | 2018-06-29 | 2020-01-02 | Paypal, Inc. | Optimization of data queue priority for reducing network data load speeds |
US20200076922A1 (en) * | 2018-09-04 | 2020-03-05 | International Business Machines Corporation | Application data access priority for remote storage systems |
CN110865846A (zh) * | 2019-11-14 | 2020-03-06 | 北京无限光场科技有限公司 | 应用管理的方法、装置、终端、系统及存储介质 |
CN111212156A (zh) * | 2020-01-15 | 2020-05-29 | 中国银联股份有限公司 | 一种网络连接方法与装置 |
CN111427629A (zh) * | 2020-03-30 | 2020-07-17 | 北京梧桐车联科技有限责任公司 | 应用启动方法、装置、车机设备及存储介质 |
CN111488220A (zh) * | 2020-04-09 | 2020-08-04 | 北京字节跳动网络技术有限公司 | 一种启动请求处理方法、装置和电子设备 |
-
2020
- 2020-12-23 CN CN202011546199.XA patent/CN114745272B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060493A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Negotiated distribution of cache content |
US20060080486A1 (en) * | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Method and apparatus for prioritizing requests for information in a network environment |
US20150200994A1 (en) * | 2012-05-29 | 2015-07-16 | Google Inc. | Preloading resources of a web page |
US8893014B1 (en) * | 2012-06-28 | 2014-11-18 | Google Inc. | Deferred loading of a web page |
CN104182206A (zh) * | 2014-08-28 | 2014-12-03 | 北京京东尚科信息技术有限公司 | 一种数据转发方法 |
CN108512864A (zh) * | 2017-02-23 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 一种网络请求调度的方法及装置 |
CN107766101A (zh) * | 2017-09-30 | 2018-03-06 | 五八有限公司 | App启动事件的处理方法、装置和设备 |
US20200007453A1 (en) * | 2018-06-29 | 2020-01-02 | Paypal, Inc. | Optimization of data queue priority for reducing network data load speeds |
US20200076922A1 (en) * | 2018-09-04 | 2020-03-05 | International Business Machines Corporation | Application data access priority for remote storage systems |
CN110865846A (zh) * | 2019-11-14 | 2020-03-06 | 北京无限光场科技有限公司 | 应用管理的方法、装置、终端、系统及存储介质 |
CN111212156A (zh) * | 2020-01-15 | 2020-05-29 | 中国银联股份有限公司 | 一种网络连接方法与装置 |
CN111427629A (zh) * | 2020-03-30 | 2020-07-17 | 北京梧桐车联科技有限责任公司 | 应用启动方法、装置、车机设备及存储介质 |
CN111488220A (zh) * | 2020-04-09 | 2020-08-04 | 北京字节跳动网络技术有限公司 | 一种启动请求处理方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114745272B (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102151329B1 (ko) | 페이지 점프 방법 및 장치 | |
CN110162726B (zh) | 页面资源的加载方法、装置及存储介质 | |
CN110636340B (zh) | 视频文件的上传方法、存储设备、终端设备及存储介质 | |
US11210127B2 (en) | Method and apparatus for processing request | |
CN109347652A (zh) | 服务器集群的服务管理方法和装置 | |
US9852050B2 (en) | Selecting computing resources | |
CN110119307B (zh) | 数据处理请求的处理方法、装置、存储介质及电子装置 | |
US20150089510A1 (en) | Device, system, apparatus, method and program product for scheduling | |
US10997569B2 (en) | Method and device for processing virtual cards | |
CN112988185A (zh) | 云应用更新方法、装置、系统、电子设备及存储介质 | |
CN112328458A (zh) | 基于flink数据引擎的数据处理方法、装置 | |
CN109144846B (zh) | 用于测试服务器的测试方法和装置 | |
CN108733545B (zh) | 一种压力测试方法及装置 | |
CN111494938B (zh) | 测速方法、装置、存储介质及电子装置 | |
CN114745272B (zh) | 用于提高应用程序启动速度的方法、服务器、介质及设备 | |
CN113304469B (zh) | 游戏玩家匹配方法、装置、计算机设备 | |
CN111045789A (zh) | 一种虚拟机开机方法、装置及电子设备和存储介质 | |
CN108446144B (zh) | 一种应用程序启动方法、装置、终端及存储介质 | |
CN115037665B (zh) | 设备测试方法和装置 | |
CN114296865B (zh) | 一种虚拟机线程的调度方法、装置、电子设备及存储介质 | |
EP3229144A1 (en) | Distribution method, device, and program | |
CN110046319B (zh) | 社交媒体信息采集方法、装置、系统、设备及存储介质 | |
CN112035203B (zh) | 一种接口轮询方法、装置、设备及存储介质 | |
CN110401605B (zh) | 一种局域网内带宽分配的方法、装置、服务器及终端 | |
CN108920722B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |