CN115858164A - 资源分包方法及装置、设备、存储介质 - Google Patents
资源分包方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN115858164A CN115858164A CN202211616212.3A CN202211616212A CN115858164A CN 115858164 A CN115858164 A CN 115858164A CN 202211616212 A CN202211616212 A CN 202211616212A CN 115858164 A CN115858164 A CN 115858164A
- Authority
- CN
- China
- Prior art keywords
- access
- resources
- resource
- time
- loading
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本公开提供一种资源分包方法及相关设备。方法包括:获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种资源分包方法及装置、设备、存储介质。
背景技术
随着应用程序所需资源的数据量不断增加,目前的应用程序资源加载过程中,常常会出现加载时间过长、无法加载、消耗大量的流量等问题,极大影响用户使用应用程序的流畅性。同时,还需要在应用程序的开发阶段就对资源进行分类,例如按照使用场景对资源分类,以便于在该使用场景中进行相应资源加载。这需要在应用程序的开发阶段介入,而对于在应用程序的开发阶段未考虑的情况,需要重新对资源进行整理,这两种情况都需要投入大量时间和人力,导致成本过高。
发明内容
本公开提出一种资源分包的方法及相关设备,以在一定程度上解决上述至少部分技术问题。
本公开第一方面,提供了一种资源分包方法,所述方法包括:
获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;
基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;
基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
本公开第二方面,提供了一种资源加载方法,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少一个所述资源的首次访问时间;
所述方法包括:
获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序的资源列表;
基于所述访问顺序对所述第一数据包进行加载。
本公开第三方面,提供了一种资源分包装置,包括:
信息获取模块,用于获获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;
计算模块,用于基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;
资源分包模块,用于基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
本公开第四方面,提供了一种资源加载装置,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少一个所述资源的首次访问时间;
所述装置包括:
安装包获取模块,用于获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序的资源列表;
加载模块,用于基于所述访问顺序对所述第一数据包进行加载。
本公开第五方面,提供了一种电子设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面或第二方面所述的方法的指令。
本公开第六方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面或第二方面所述的方法。
本公开第七方面,提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行第一方面或第二方面所述的方法。
从上面所述可以看出,本公开提供的一种资源加载方法及相关设备,基于多个资源的多个访问信息确定每个资源的最早访问时间,并基于每个资源的最早访问时间合理地对资源进行分包。解决了资源数据量过大导致的诸如无法安装、消耗大量流量、加载时间长等问题。使得即使在开发后期进行分包也不会导致改造成本过高的问题,能够降低分包的投入成本。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的系统架构的示意图。
图2为本公开实施例的示例性终端的硬件结构示意图。
图3为本公开实施例的资源分包方法的示意性流程图。
图4为本公开实施例的访问信息的示意图。
图5为本公开实施例的访问信息的数据合并的示意图。
图6为本公开实施例的资源访问信息的访问有向图的示意图。
图7为本公开实施例的资源分包计算的示意图。
图8为本公开实施例的资源分包装置的示意图。
图9为本公开实施例的资源加载装置的示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
在中大型应用程序中,一般需要使用到多种类型的资源文件,例如游戏应用程序中用到的脚本、声音、图像、视频以及各种应用程序引擎的资源等等,这些资源的数据量往往非常大。目前越来越多的应用程序部署于智能终端(如智能手机过或智能平板电脑等),例如手游应用程序。而智能终端由于自身存储空间有限,且往往会安装很多其他的应用程序,使得剩余的存储空间有时不足以安装完整个应用程序所需的资源。同时,在智能终端安装应用程序的过程中,用户还需要承担从网络加载应用程序所需的资源时产生的流量费用。这就使得在没有免费网络环境的情况下,用户可能会避免加载资源。即使用户选择在没有免费网络环境时进行加载,也会由于应用程序所需的资源的数据量过大使得加载时间过长,从而导致用户由于等待时间长而主动中断应用程序资源加载的可能性增高,或导致由于意外中断应用程序资源加载的可能性增大。因此,如何对应用程序的资源进行分包,以使得用户在加载资源时能够兼顾应用程序的流畅性和加载等待时间,减少应用程序开发方对资源分包的开发投入、重新整理和改造的成本等成为了亟需解决的技术问题。
鉴于此,本公开实施例提供了一种资源分包方法及相关设备。基于多个资源的多个访问信息确定每个资源的最早访问时间,并基于每个资源的最早访问时间合理地对资源进行分包。解决了资源数据量过大导致的诸如无法安装、消耗大量流量、加载时间长等问题。使得即使在开发后期进行分包也不会导致改造成本过高的问题,能够降低分包的投入成本。
图1示出了本公开实施例的系统架构的示意图。参考图1,该游戏数据包的加载架构100可以包括服务器110、终端120以及提供通信链路的网络130。服务器110和终端120之间可通过有线或无线的网络130连接。其中,服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端120可以是硬件或软件实现。例如,终端120为硬件实现时,可以是具有显示屏并且支持页面显示的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。终端120设备为软件实现时,可以安装在上述所列举的电子设备中;其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块,在此不做具体限定。
需要说明的是,本申请实施例所提供的游戏数据包的加载方法可以由终端120来执行,也可以由服务器110来执行。应了解,图1中的终端、网络和服务器的数目仅为示意,并不旨在对其进行限制。根据实现需要,可以具有任意数目的终端、网络和服务器。
图2示出了本公开实施例所提供的示例性终端200的硬件结构示意图。如图2所示,终端200可以包括:处理器202、存储器204、网络模块206、外围接口208和总线210。其中,处理器202、存储器204、网络模块206和外围接口208通过总线210实现彼此之间在终端设备200的内部的通信连接。
处理器202可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路。处理器202可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器202还可以包括集成为单一逻辑组件的多个处理器。例如,如图2所示,处理器202可以包括多个处理器202a、202b和202c。
存储器204可以配置为存储数据(例如,指令、计算机代码等)。如图2所示,存储器204存储的数据可以包括程序指令(例如,用于实现本公开实施例的游戏数据包的加载方法的程序指令)以及要处理的数据(例如,存储器可以存储其他模块的配置文件等)。处理器202也可以访问存储器204存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器204可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器204可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络模块206可以配置为经由网络向终端200提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络模块106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口208可以配置为将终端设备200与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线210可以被配置为在终端200的各个组件(例如处理器202、存储器204、网络模块206和外围接口208)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述终端200的架构仅示出了处理器202、存储器204、网络模块206、外围接口208和总线210,但是在具体实施过程中,该终端设备200的架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述终端200的架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
参见图3,图3示出了根据本公开实施例的资源分包方法的示意性流程图。该方法300可以用于实现应用程序的资源分包,并可以由图1的服务器110或终端120实现,也可以由服务器110和终端120二者共同实现。如图3所示,资源分包方,300可以进一步包括以下步骤。
在步骤S310,获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间。
其中,在应用程序开发完成后,可以得到该应用程序的多个资源。每个资源用于实现不同的应用程序功能或操作。访问信息可以是对该多个资源的首次访问时间,可以由不同的访问对象对应用程序进行访问的过程中获取得到。
在一些实施例中,获取针对多个资源的多个访问信息,包括:
获取针对所述多个资源的实际首次访问时间;
基于所述实际首次访问时间和参考时间点计算得到针对所述多个资源的相对访问时间;
移除所述相对访问时间中的未访问资源时间,得到针对所述多个资源的所述访问信息。
具体地,可以由多名不同的访问对象对该应用程序进行使用,并记录每名访问对象在使用中所访问到的资源及其对应的实际访问时间。该实际访问时间可以包括访问对象在整个使用过程中首次使用该应用程序的实际开始时间、每次进入该应用程序的实际时间、离开应用程序的实际时间、对各个资源的实际首次访问时间等。其中,应用程序中往往会包括很多不同的应用场景,访问对象可以尽可能使用更多的应用场景以访问更多的资源,从而获取足够多的访问信息。这样通过记录每个访问对象的访问信息,便于后续对访问信息进行数据处理,能够更准确地反映出访问对象对资源的访问顺序和访问时间。
参见图4,图4示出了根据本公开实施例的访问信息的示意图。图4中,访问对象的实际访问时间410可以包括:在时间点15:00:00开始进入应用程序,在时间点15:00:10访问资源A,在时间点15:00:30访问资源B,在时间点15:00:40休息,在时间点15:01:00继续使用应用程序,在时间点15:01:10访问资源C,在时间点15:01:30访问资源D,……。
由于每个访问对象使用应用程序的实际访问时间会不同,为了让所有访问对象之间的访问数据具有可对比性,可以将所有访问对象的访问数据进行处理,使得每个访问对象的访问数据能够基于同一参考时间点进行时间对齐。在一些实施例中,可以基于访问信息中的实际首次访问时间计算得到每个资源的相对访问时间,该相对访问时间可以包括每个资源的首次访问时间相对于该参考时间点(例如首次进入应用程序的时间)的时间。如图4所示,对实际访问时间410进行时间对齐处理后,得到相对访问时间420;该相对访问时间420包括:以首次进入游戏的时间点作为参考时间点即时间点0s,在时间点10s(时间点15:00:10-时间点15:00:00=10s)访问资源A,在时间点30s访问资源B(时间点15:00:30-时间点15:00:00=30s),在时间点40s休息(时间点15:00:40-时间点15:00:00=40s),在时间点60s继续使用应用程序(时间点15:01:00-时间点15:00:00=60s),在时间点70s访问资源C(时间点15:01:10-时间点15:00:00=70s),在时间点90s访问资源D(时间点15:01:30-时间点15:00:00=90s),……。
此外,访问对象在使用过程中不可能一直保持使用状态,中间可能会出现中断或暂停。例如图4的实际访问时间410中,在时间点15:00:40至时间点15:01:00期间访问对象处于休闲状态,可以在相对访问时间420中将这部分处于休闲状态的时间段移除,以减少相对访问时间的整体数据量,有利于提升后续过程中的数据处理效率。那么可以得到数据移除后的针对多个资源的访问信息430包括:在参考时间点0s开始使用应用程序,在时间点10s访问资源A,在时间点30s访问资源B,在时间点70s访问资源C,在时间点90s访问资源D,……。
在步骤S320,基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间。
其中,对于每个访问对象的实际访问时间(例如图4中的访问信息410)都进行数据处理,例如图4所示的时间对齐和/或数据移除,可以得到每个访问对象针对多个资源的访问信息(例如图4中的访问信息430)。可以对所有访问对象的访问信息进行数据合并,得到每个资源被访问的最早访问时间。
在一些实施例中,基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间,包括:
针对每个所述访问信息,基于所述访问信息中的所述首次访问时间形成所述访问信息对应的资源访问线路;其中,所述资源访问线路包括对所述访问信息中资源的第一访问顺序和访问相邻资源之间的间隔时长;
基于所有所述访问信息对应的所述资源访问线路确定每个资源被访问的最早访问时间。
在一些实施例中,基于所述访问信息中的所述首次访问时间形成所述访问信息对应的资源访问线路,包括:
将所述访问信息中的所述资源作为节点,根据所述资源的首次访问时间确定从起始参考节点经过每个所述节点的第一访问顺序和相邻所述节点之间的间隔时长;
基于所述第一访问顺序和相邻所述节点之间的间隔时长,形成每个所述访问信息对应的访问有向图;
以及基于所有所述访问信息对应的所述资源访问线路确定每个资源被访问的最早访问时间,包括:
基于所有所述访问信息对应的访问有向图,确定所述起始参考节点到达每个所述节点的最短有向路径;
基于所述最短有向路径上的所述节点之间的间隔时长之和,得到所述节点对应的资源的最早访问时间。
具体地,参见图5,图5中示出了本公开实施例的访问信息的数据合并的示意图。图5中,访问对象1的访问信息510包括:在参考时间点0s开始首次进入应用程序,在时间点10s访问资源A,在时间点30s访问资源B,在时间点50s访问资源C,在时间点70s访问资源D,……。访问对象2的访问信息520包括:在参考时间点0s开始首次进入应用程序,在时间点20s访问资源C,在时间点30s访问资源B,在时间点50s访问资源A,在时间点90s访问资源D,……。可见,在应用程序的使用过程中访问资源的相对顺序通常有一定的先后关系,因此在进行多个访问对象的数据合并时,可以基于访问对象对资源的访问先后顺序构建如图6所示的访问有向图,图6示出了根据本公开实施例的资源访问信息的访问有向图的示意图。
图6中,点O表示开始应用程序的初始参考节点,可以对应参考时间点0s;点A、B、C、D可以分别表示资源A、B、C、D。基于图5中的访问对象1的访问信息510可以形成访问信息510对应的资源访问线路(如图6中带箭头的实线所示):从点O出发,经过10s到达点A(即访问资源A),再经过20s达到点B(即访问资源B),再经过20s达到点C(即访问资源C),再经过20s达到点D(即访问资源D)。同样地,基于图5中的访问对象2的访问信息520可以形成访问对象2的资源访问线路(如图6中带箭头的虚线所示):从点O出发,经过20s到达点C(即访问资源C),再经过10s达到点B(即访问资源B),再经过20s达到点A(即访问资源A),再经过40s达到点D(即访问资源D)。其中,图6中两个资源访问线路在同一有向图中,则可以基于图算法寻找出从初始参考节点O到节点A、B、C、D的最短路径,即可得到每个资源的最早访问时间。采用有向图和图算法在访问对象和资源的数量很大时,能够快速且准确地确定每个资源的最早访问时间。例如,图5中的每个资源的最早访问时间530包括:以0s为参考时间点,资源A的最早访问时间为10s,即资源A最先被访问;资源C的最早访问时间为20s,即表示资源C在继数据包A后第二个被访问;资源B的最早访问时间为30s,即表示资源B在继资源A和C后第三个被访问;资源D的最早访问时间为50s,即表示资源D在继资源A、C、B后第四个被访问;……。以此类推,可以确定出每个资源的最早访问时间及其对应的第一访问顺序,例如A-C-B-D。
应了解,图4和图5中仅为示例说明,并不旨在对资源和访问信息的数量进行限制,还可以包括更多的资源和更多的访问信息,在此不做限制。访问对象在使用应用程序时所产生的访问信息越多,经过数据处理后所得到的资源的最早访问时间越精确。
在步骤S330,基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
其中,对于应用程序的一些资源在应用程序开始之后就会被用到,所以这部分资源需要部署在安装包中,不能从安装包中移除。否则,这些资源不在安装包中会导致应用程序开始后还需要等待这部分资源加载完成才能开始运行应用程序,这将给用户带来不好的体验。所以,需要保证用户在启动应用程序后,对于剩余的每个资源在首次被访问时就已经加载完成,以保证游戏的流畅性。
在一些实施例中,基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,包括:
基于所述资源被访问的最早访问时间确定所述资源的第二访问顺序;
基于所述资源的数据量和网速确定满足第一条件的第k个资源;其中,所述第一条件包括:对于按照所述第二访问顺序排列的多个资源中,从所述第k个资源到位于所述第k个资源之后的第i个资源的加载时间不超过所述第i资源所对应的首次被访问的第i访问时间;其中,k和i为正整数且i大于k;
将按照所述第二访问顺序排列的多个资源中的第k个资源以及位于所述第k个资源之后的资源确定为所述目标资源。
其中,可以基于该资源被访问的最早访问时间确定所述资源的第二访问顺序。相应地,进一步地,多个资源按照该第二访问顺序进行排列,可以得到对应的资源访问序列。具体地,参见图7,图7示出了根据本公开实施例的资源分包计算的示意图。图7中,应用程序可以包括多个资源F0-Fn-1,该多个资源F0-Fn-1可以是如图5-图6中所示的数据处理过程得到的资源访问序列,按照第二访问顺序进行排列。可以将第k个资源到第n-1个资源Fk-Fn-1部署在内容分发网络(Content Delivery Network,CDN);那么,第k个资源之前的资源F0-Fk-1可以作为应用程序安装包中的资源,资源F0-Fk-1会在应用程序安装时就已经加载完成。其中,n、k都是正整数。因此,确定k的值可以确定整个游戏的数据包中哪些部署于安装包中,哪些部署于内容分发网络。
在应用程序启动之后,可以依次从内容分发网络CDN中加载资源Fk、Fk+1、……Fn-1。在边运行应用程序边加载的过程中,为了保证应用程序运行的流畅性,对于存储于内容分发网络CDN中的资源,需要在其被首次访问之前应该已经被加载。那么,对于存储于内容分发网络CDN中资源Fi,其所对应的首次访问时间点为ti,即i∈[k,n),需要满足在时间点ti上资源Fk、Fk+1、……Fi已经被加载完成。即需要满足第一条件:
其中,s为网速;每个资源的数据量均为已知,可以记为V,例如Vi表示资源Fi的数据量、Vk表示资源Fk的数据量。满足该第一条件的k值可能会出现多个,然而为了尽可能减小安装包的数据量,从而减少对终端的空间占用,那么资源F0-Fk-1的数据量需要尽可能小,而部署在内容分发网络的资源Fk-Fn-1的数据量尽可能大。也就是说,可以选择满足第一条件的多个k值中的最小值作为最终的k值。
在一些实施例中,基于所述资源的数据量和网速确定满足第一条件的第k个资源,包括:
基于所述资源的数据量计算按照所述第二访问顺序排列的所述多个资源中,位于所述第k-1个资源之前资源的第一数据量总和Dk-1,以及所述第k个资源之前的资源的第二数据量总和Dk;
遍历所述多个资源,计算出第k个资源以及位于所述第k个资源之后的资源中,所述第二数据量总和Dk、以及所述第k个资源对应的第k访问时间与所述网速的乘积的最大差值Mk;
计算满足第二条件的k值,其中,所述第二条件包括:所述第一数据量总和Dk-1大于或等于所述最大差值Mi。
其中,为了进一步降低计算的复杂度,可以将计算第0个资源F0到第i个资源Fi的数据量总和Di,其中,
则将公式(2)带入公式(1)中可以得到:
(Di-Dk-1)/s≤ti (3),
即Dk-l≥Di-tiS (4),
可以将i从n-1到0进行遍历,得到[k,n)区间上Di-tis的最大值为Mi,即为:
在i从n-1到0的遍历过程中,计算出最后一个满足Dk-1≥Mk的k值即可,其计算复杂度低于公式(1)的计算复杂度。可见,确定k的值后即可相应地确定目标资源Fk-Fn-1。
在一些实施例中,方法300还可以包括:
将所述第一数据包并部署于内容分发网络,以及将所述第一数据包的资源列表部署于安装包中,其中,所述第一数据包的资源列表包括所述第二访问顺序中关于所述第一数据包的部分。
其中,当k的值确定后,即可确定图7中的资源F0-Fn-1中的目标资源Fk-Fn-1作为第一数据包部署在内容分发网络,资源F0-Fk-1和/或资源Fk-Fn-1的资源列表可以部署在安装包。此时,在网速不低于s时,用户启动资源后,可以边运行应用程序边按照资源Fk-Fn-1的顺序进行加载,在进行资源加载的同时保证用户可以流畅地运行应用程序,甚至感知不到资源的加载。
可见,本公开实施例在既定的网络环境下,合理地对应用程序的资源进行分包,能够确定安装包中的资源,以及需要从网络加载的资源及其顺序的最佳方式,解决了应用程序资源数据量过大导致的诸如无法安装、消耗大量流量、加载时间长等问题。使得即使在应用程序开发的后期进行分包也不会导致改造成本过高的问题,能够降低分包的投入成本。
根据本公开实施例,还提供了一种资源的加载方法,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少一个所述资源的首次访问时间;
所述方法包括:
获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序(例如,前述实施例中的第二访问顺序)的资源列表;
基于所述访问顺序对所述第一数据包进行加载。
在一些实施例中,基于所述访问顺序对所述第一数据包进行加载,包括:在所述第一数据包中第一资源首次被访问的第一访问时间到期时,所述访问顺序中位于所述第一资源之前的资源加载完成。
在一些实施例中,基于所述访问顺序对所述第一数据包进行加载,包括:
响应于针对应用程序的启动指令,在运行应用程序的同时基于所述访问顺序对所述第一数据包进行加载;
或,
响应于用户的预加载指令,预先基于所述访问顺序对所述第一数据包进行加载,并在所述第一数据包加载完成后开始运行应用程序;
或,
响应于用户的优先加载指令,停止对当前第一数据包的加载,并对所述优先记载指令中所指示的资源进行加载。
其中,应用程序的安装包一般可以由用户同应用市场等渠道加载后,在终端进行安装。在启动应用程序后,在一些实施例中,在应用程序启动时(例如接收到针对该应用程序的启动指令),可以按照部署在内容分发网络的资源序列(例如图7中的第一数据包中的资源Fk-Fn-1)进行加载;例如,用户可以基于这种边运行应用程序边加载模式进行应用程序的加载。在一些实施例中,还可以预先加载所有部署在内容分发网络的第一数据包(例如图7中的第一数据包的资源Fk-Fn-1)。此时,用户可以发出预加载指令,响应于该预加载指令,可以展示加载界面,待内容分发网络的资源均加载完成后,开始运行应用程序。在一写些实施例中,还可以基于用户的选择对部署在内容分发网络的第一数据包(例如图7中的第一数据包中的资源Fk-Fn-1)进行加载。因为,在实际使用过程中不同的用户可能会出现个性化的要求,有可能出现某个资源需要提前加载,即现有的部署在内容分发网络的第一数据包不能满足需要,此时用户可以发出优先加载指令,基于这种优先加载模式进行资源进行加载。响应于该优先加载指令,可以中止部署在内容分发网络的资源加载,优先加载用户当前需要的资源,例如优先加载指令中可以指示需要游戏加载的资源。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种资源分包装置。参考图8,所述资源分包装置,包括:
信息获取模块,用于获获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;
计算模块,用于基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;
资源分包模块,用于基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种资源加载装置。参考图9,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少一个所述资源的首次访问时间;
所述资源分包装置,包括:
安装包获取模块,用于获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序的资源列表;
加载模块,用于基于所述访问顺序对所述第一数据包进行加载。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的游戏数据包的加载方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的游戏数据包的加载方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的游戏数据包的加载方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (15)
1.一种资源分包方法,其特征在于,包括:
获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;
基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;
基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
2.根据权利要求1所述的方法,其特征在于,基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间,包括:
针对每个所述访问信息,基于所述访问信息中的所述首次访问时间形成所述访问信息对应的资源访问线路;其中,所述资源访问线路包括对所述访问信息中资源的第一访问顺序和访问相邻资源之间的间隔时长;
基于所有所述访问信息对应的所述资源访问线路确定每个资源被访问的最早访问时间。
3.根据权利要求2所述的方法,其特征在于,基于所述访问信息中的所述首次访问时间形成所述访问信息对应的资源访问线路,包括:
将所述访问信息中的所述资源作为节点,根据所述资源的首次访问时间确定从起始参考节点经过每个所述节点的第一访问顺序和相邻所述节点之间的间隔时长;
基于所述第一访问顺序和相邻所述节点之间的间隔时长,形成每个所述访问信息对应的访问有向图;
以及基于所有所述访问信息对应的所述资源访问线路确定每个资源被访问的最早访问时间,包括:
基于所有所述访问信息对应的访问有向图,确定所述起始参考节点到达每个所述节点的最短有向路径;
基于所述最短有向路径上的所述节点之间的间隔时长之和,得到所述节点对应的资源的最早访问时间。
4.根据权利要求1所述的方法,其特征在于,获取针对多个资源的多个访问信息,包括:
获取针对所述多个资源的实际首次访问时间;
基于所述实际首次访问时间和参考时间点计算得到针对所述多个资源的相对访问时间;
移除所述相对访问时间中的未访问资源时间,得到针对所述多个资源的所述访问信息。
5.根据权利要求1所述的方法,其特征在于,基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,包括:
基于所述资源被访问的最早访问时间的先后顺序确定所述资源的第二访问顺序;
基于所述资源的数据量和网速确定满足第一条件的第k个资源;其中,所述第一条件包括:对于按照所述第二访问顺序排列的多个资源中,从所述第k个资源到位于所述第k个资源之后的第i个资源的加载时间不超过所述第i资源所对应的首次被访问的第i访问时间;其中,k和i为正整数且i大于k;
将按照所述第二访问顺序排列的多个资源中的第k个资源以及位于所述第k个资源之后的资源确定为所述目标资源。
6.根据权利要求5所述的方法,其特征在于,基于所述资源的数据量和网速确定满足第一条件的第k个资源,包括:
基于所述资源的数据量计算按照所述第二访问顺序排列的所述多个资源中,位于所述第k-1个资源之前资源的第一数据量总和Dk-1,以及所述第k个资源之前的资源的第二数据量总和Dk;
遍历所述多个资源,计算出第k个资源以及位于所述第k个资源之后的资源中,所述第二数据量总和Dk、以及所述第k个资源对应的第k访问时间与所述网速的乘积的最大差值Mk;
计算满足第二条件的k值,其中,所述第二条件包括:所述第一数据量总和Dk-1大于或等于所述最大差值Mi。
7.根据权利要求5所述的方法,其特征在于,还包括:
将所述第一数据包并部署于内容分发网络,以及将所述第一数据包的资源列表部署于安装包中,其中,所述第一数据包的资源列表包括所述第二访问顺序中关于所述第一数据包的部分。
8.一种资源的加载方法,其特征在于,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少一个所述资源的首次访问时间;
所述方法包括:
获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序的资源列表;
基于所述访问顺序对所述第一数据包进行加载。
9.根据权利要求8所述的方法,其特征在于,基于所述访问顺序对所述第一数据包进行加载,包括:
在所述第一数据包中第一资源首次被访问的第一访问时间到期时,所述访问顺序中位于所述第一资源之前的资源加载完成。
10.根据权利要求8所述的方法,其特征在于,基于所述访问顺序对所述第一数据包进行加载,包括:
响应于针对应用程序的启动指令,在运行应用程序的同时基于所述访问顺序对所述第一数据包进行加载;
或,
响应于用户的预加载指令,预先基于所述访问顺序对所述第一数据包进行加载,并在所述第一数据包加载完成后开始运行应用程序;
或,
响应于用户的优先加载指令,停止对当前第一数据包的加载,并对所述优先记载指令中所指示的资源进行加载。
11.一种资源分包装置,其特征在于,包括:
信息获取模块,用于获获取针对多个资源的多个访问信息;其中,所述访问信息包括对至少一个所述资源的首次访问时间;
计算模块,用于基于所述多个访问信息中对应于每个所述资源的多个所述首次访问时间,确定每个所述资源被访问的最早访问时间;
资源分包模块,用于基于每个所述资源的所述最早访问时间确定所述多个资源中的目标资源,以形成第一数据包。
12.一种资源加载装置,其特征在于,多个所述资源包括安装包和部署于内容分发网络的第一数据包;其中,所述第一数据包基于每个所述资源被访问的最早访问时间确定;每个所述资源被访问的最早访问时间基于多个所述资源的多个访问信息确定;所述访问信息包括对至少所述资源的首次访问时间;
所述装置包括:
安装包获取模块,用于获取所述安装包,所述安装包包括用于指示所述第一数据包首次被访问的访问顺序的资源列表;
加载模块,用于基于所述访问顺序对所述第一数据包进行加载。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至10任意一项所述的方法。
14.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至10任一所述方法。
15.一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行权利要求1至10任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211616212.3A CN115858164A (zh) | 2022-12-15 | 2022-12-15 | 资源分包方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211616212.3A CN115858164A (zh) | 2022-12-15 | 2022-12-15 | 资源分包方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858164A true CN115858164A (zh) | 2023-03-28 |
Family
ID=85673272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211616212.3A Pending CN115858164A (zh) | 2022-12-15 | 2022-12-15 | 资源分包方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858164A (zh) |
-
2022
- 2022-12-15 CN CN202211616212.3A patent/CN115858164A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572278B (zh) | 轻应用调用本地端能力的方法、装置及设备 | |
CN107798064B (zh) | 页面处理方法、电子设备及计算机可读存储介质 | |
CN114064594B (zh) | 数据处理方法和装置 | |
US10303388B1 (en) | Storage filtering using container images | |
CN110020383B (zh) | 一种页面数据请求处理方法及装置 | |
WO2019047708A1 (zh) | 资源配置方法及相关产品 | |
CN111198777A (zh) | 数据处理方法、装置、终端及存储介质 | |
US20150149615A1 (en) | Process cage providing attraction to distributed storage | |
CN112667405A (zh) | 信息处理方法、装置、设备及存储介质 | |
CN113553178A (zh) | 任务处理方法、装置和电子设备 | |
CN109032693B (zh) | 一种加载展示信息方法、装置、电子设备及可读存储介质 | |
CN111694639A (zh) | 进程容器地址的更新方法、装置和电子设备 | |
CN113821307A (zh) | 一种虚拟机镜像的快速导入方法、装置及设备 | |
CN102377793B (zh) | 基于移动通讯设备终端的Flash交互方法及装置 | |
CN112565210A (zh) | Cdn节点推荐方法、系统、电子设备及存储介质 | |
CN108108203B (zh) | 用于安装包下载安装过程的方法、装置及系统 | |
US20140215035A1 (en) | Distribution of application components among devices | |
CN115858164A (zh) | 资源分包方法及装置、设备、存储介质 | |
CN111612158A (zh) | 模型部署方法、装置、设备和存储介质 | |
CN112306683A (zh) | 一种函数劫持方法、装置、介质和电子设备 | |
CN110968328A (zh) | 一种实现应用加载的方法、装置、计算机存储介质及终端 | |
CN110609728A (zh) | 页面生成方法、装置及电子设备 | |
CN112580086A (zh) | 配置文件的访问保护方法、装置、设备以及存储介质 | |
CN112559394B (zh) | 系统库访问方法、装置以及电子设备 | |
JP7331132B2 (ja) | アプリケーションプログラムのインストール方法、稼働方法、電子機器、コンピュータ可読媒体 |
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 |