《一种资源下载的方法和设备.pdf》由会员分享,可在线阅读,更多相关《一种资源下载的方法和设备.pdf(26页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103997544 A (43)申请公布日 2014.08.20 CN 103997544 A (21)申请号 201410260637.4 (22)申请日 2014.06.12 H04L 29/08(2006.01) H04L 29/06(2006.01) (71)申请人 网易 (杭州) 网络有限公司 地址 310052 浙江省杭州市滨江区长河街道 网商路 599 号 4 幢 7 层 (72)发明人 许飞 关子敬 (74)专利代理机构 北京信远达知识产权代理事 务所 ( 普通合伙 ) 11304 代理人 赵百令 刘大玲 (54) 发明名称 一种资源下载的方法和设备 。
2、(57) 摘要 本发明的实施方式提供了一种资源下载的方 法和设备。该方法包括 : 截获对当前资源的访问 请求 ; 通过资源关系索引文件, 查找与所述当前 资源具有依赖关系且所述客户端本地不存在的资 源作为预测资源, 其中所述资源关系索引文件为 预先依据网络应用的完整客户端中各个资源之间 依赖关系而生成的 ; 从可用于下载所述预测资源 的未占用线程中分配出第一线程, 并利用所述第 一线程下载所述预测资源到所述客户端本地。通 过利用未占用线程预先下载客户端在访问当前资 源之后接下来可能会访问的预测资源, 本发明的 方法不仅缩短了采用微端技术的客户端在资源加 载过程中的加载延时, 而且还避免了下载线。
3、程的 浪费。 此外, 本发明的实施方式提供了一种资源下 载的设备。 (51)Int.Cl. 权利要求书 3 页 说明书 16 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书16页 附图6页 (10)申请公布号 CN 103997544 A CN 103997544 A 1/3 页 2 1. 一种方法, 包括 : A)、 截获对当前资源的访问请求 ; B)、 通过资源关系索引文件, 查找与所述当前资源具有依赖关系且所述客户端本地不 存在的资源作为预测资源, 其中所述资源关系索引文件为预先依据网络应用的完整客户端 中各个资源之间依赖关系而生成的。
4、 ; C)、 从可用于下载所述预测资源的未占用线程中分配出第一线程, 并利用所述第一线 程下载所述预测资源到所述客户端本地。 2. 根据权利要求 1 所述的方法, 其中, 所述步骤 C) 包括 : 将下载所述预测资源的第一下载任务加入到第一任务集合中 ; 响应于所述第一下载任务分得所述第一线程, 从所述第一任务集合中取出所述第一下 载任务, 并利用所述第一线程下载所述预测资源到所述客户端本地。 3. 根据权利要求 2 所述的方法, 其中, 按照各个下载任务加入第一任务集合的时间由 后到先的顺序为所述第一任务集合中的各个下载任务分配线程。 4. 根据权利要求 1 所述的方法, 还包括 : 响应于。
5、所述客户端本地不存在所述当前资源, 从可用于下载所述当前资源的未占用线 程中分配出第二线程, 并利用所述第二线程下载所述当前资源到所述客户端本地 ; 响应于所述当前资源已分得第二线程且还存在可用于下载所述预测资源的未占用线 程, 进入步骤 C)。 5. 根据权利要求 4 所述的方法, 所述响应于所述客户端本地不存在所述当前资源, 从 可用于下载所述当前资源的未占用线程中分配出第二线程, 并利用所述第二线程下载所述 当前资源到所述客户端本地, 包括 : 响应于所述客户端本地不存在所述当前资源, 将下载所述当前资源的第二下载任务加 入到第二任务集合中 ; 响应于所述第二下载任务分得所述第二线程, 。
6、从所述第二任务集合中取出所述第二下 载任务, 并利用所述第二线程下载所述当前资源到所述客户端本地。 6. 根据权利要求 5 所述的方法, 其中, 按照各个下载任务加入第二任务集合的时间由 先到后的顺序为所述第二任务集合中的各个下载任务分配线程。 7. 根据权利要求 1 所述的方法, 还包括 : 响应于所述预测资源已分得第一线程且还存在可用于下载随机资源的未占用线程, 随 机选取所述客户端本地不存在的资源作为随机资源, 并利用所述可用于下载随机资源的未 占用线程下载所述随机资源。 8.根据权利要求4或7所述的方法, 其中, 所述客户端可用于下载资源的线程包括通用 线程和专用线程, 所述通用线程可。
7、用于下载所述当前资源、 所述预测资源和所述随机资源, 所述专用线程仅可用于下载所述当前资源。 9. 根据权利要求 1 所述的方法, 还包括 : 下载所述客户端的补丁文件 ; 以所述补丁文件中所要修改的原始资源不存在于所述客户端本地的补丁数据作为待 补丁数据, 记录所述待补丁数据所要修改的原始资源 ; 响应于所述待补丁数据所要修改的原始资源下载到所述客户端本地, 对所述客户端应 权 利 要 求 书 CN 103997544 A 2 2/3 页 3 用所述待补丁数据。 10. 根据权利要求 9 所述的方法, 还包括 : 以所述补丁文件中所要修改的原始资源存在于所述客户端本地的补丁资源作为第一 即时。
8、补丁数据, 对所述客户端应用所述第一即时补丁数据 ; 以所述补丁文件中用于为所述客户端增加资源的补丁数据作为第二即时补丁数据, 对 所述客户端应用所述第二即时补丁数据 ; 以所述补丁文件中长度超过一个文件段的补丁数据为第三即时补丁数据, 对所述客户 端应用所述第三即时补丁数据。 11. 一种设备, 包括 : 访问截获模块, 用于截获对当前资源的访问请求 ; 预测资源查找模块, 用于通过资源关系索引文件, 查找与所述当前资源具有依赖关系 且所述客户端本地不存在的资源作为预测资源, 其中所述资源关系索引文件为预先依据网 络应用的完整客户端中各个资源之间依赖关系而生成的 ; 第一下载模块, 用于从可。
9、用于下载所述预测资源的未占用线程中分配出第一线程, 并 利用所述第一线程下载所述预测资源到所述客户端本地。 12. 根据权利要求 11 所述的设备, 其中, 所述第一下载模块包括 : 第一集合加入子模块, 用于将下载所述预测资源的第一下载任务加入到第一任务集合 中 ; 第一集合取出子模块, 用于响应于所述第一下载任务分得所述第一线程, 从所述第一 任务集合中取出所述第一下载任务, 并利用所述第一线程下载所述预测资源到所述客户端 本地。 13. 根据权利要求 12 所述的设备, 其中, 按照各个下载任务加入第一任务集合的时间 由后到先的顺序为所述第一任务集合中的各个下载任务分配线程。 14. 根。
10、据权利要求 11 所述的设备, 还包括 : 第二下载模块, 用于响应于所述客户端本地不存在所述当前资源, 从可用于下载所述 当前资源的未占用线程中分配出第二线程, 并利用所述第二线程下载所述当前资源到所述 客户端本地 ; 第一触发模块, 用于响应于所述当前资源已分得第二线程且还存在可用于下载所述预 测资源的未占用线程, 触发所述第一下载模块。 15. 根据权利要求 14 所述的设备, 其中, 所述第二下载模块包括 : 第二集合加入子模块, 用于响应于所述客户端本地不存在所述当前资源, 将下载所述 当前资源的第二下载任务加入到第二任务集合中 ; 第二集合取出子模块, 用于响应于所述第二下载任务分。
11、得所述第二线程, 从所述第二 任务集合中取出所述第二下载任务, 并利用所述第二线程下载所述当前资源到所述客户端 本地。 16. 根据权利要求 15 所述的设备, 其中, 按照各个下载任务加入第二任务集合的时间 由先到后的顺序为所述第二任务集合中的各个下载任务分配线程。 17. 根据权利要求 11 所述的设备, 还包括 : 第三下载模块, 用于响应于所述预测资源已分得第一线程且还存在可用于下载随机资 权 利 要 求 书 CN 103997544 A 3 3/3 页 4 源的未占用线程, 随机选取所述客户端本地不存在的资源作为随机资源, 并利用所述可用 于随机资源的未占用线程下载所述随机资源。 1。
12、8. 根据权利要求 14 或 17 所述的设备, 其中, 所述客户端可用于下载资源的线程包括 通用线程和专用线程, 所述通用线程可用于下载所述当前资源、 所述预测资源和所述随机 资源, 所述专用线程仅可用于下载所述当前资源。 19. 根据权利要求 11 所述的设备, 还包括 : 补丁下载模块, 用于下载所述客户端的补丁文件 ; 补丁记录模块, 用于以所述补丁文件中所要修改的原始资源不存在于所述客户端本地 的补丁数据作为待补丁数据, 记录所述待补丁数据所要修改的原始资源 ; 第一补丁应用模块, 用于响应于所述待补丁数据所要修改的原始资源下载到所述客户 端本地, 对所述客户端应用所述待补丁数据。 。
13、20. 根据权利要求 19 所述的设备, 还包括 : 第二补丁应用模块, 用于以所述补丁文件中所要修改的原始资源存在于所述客户端本 地的补丁资源作为第一即时补丁数据, 对所述客户端应用所述第一即时补丁数据 ; 第三补丁应用模块, 用于以所述补丁文件中用于为所述客户端增加资源的补丁数据作 为第二即时补丁数据, 对所述客户端应用所述第二即时补丁数据 ; 第四补丁应用模块, 用于以所述补丁文件中长度超过一个文件段的补丁数据为第三即 时补丁数据, 对所述客户端应用所述第三即时补丁数据。 权 利 要 求 书 CN 103997544 A 4 1/16 页 5 一种资源下载的方法和设备 技术领域 0001。
14、 本发明的实施方式涉及信息技术领域, 更具体地, 本发明的实施方式涉及一种资 源下载的方法和设备。 背景技术 0002 本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。 此处的 描述不因为包括在本部分中就承认是现有技术。 0003 许多网络应用都为其自身提供了用于安装在用户终端设备上的客户端程序 ( 简 称客户端 )。对于提供客户端的网络应用, 网络应用的客户端需要先被下载并安装到用户 终端设备上, 然后通过客户端与服务器之间的信息交互, 用户可以在客户端上实现对网络 应用的使用和体验。通过客户端向用户提供网络应用, 使得网络应用的一些数据可以随客 户端保存在用户终端设备本地,。
15、 从而避免用户每次使用网络应用时都从服务器下载全部数 据, 减少了用户使用网络应用时需要下载的数据以及网络应用使用过程中对网络资源的占 用。 0004 然而, 随着网络应用所涉及的数据量越来越大, 网络应用的客户端所包含资源的 数据量也越来越大, 导致用户下载客户端需要花费的时间也越来越长, 这不仅造成了用户 使用上的不便, 也使得许多网络应用的用户在客户端下载的过程中流失。为了节省用户下 载客户端需要花费的时间, 使得用户能够尽早进入网络应用的使用和体验而不至于网络应 用的用户流失, 一些现有的网络应用采用了微客户端 ( 简称微端 ) 技术。具体地说, 在微客 户端技术中, 提供给用户下载的。
16、客户端 ( 即微端 ) 仅包含网络应用最初使用时所必备的资 源, 而在客户端运行的过程中, 通过接管客户端的文件访问, 当发现客户端当前请求访问的 资源不存在于客户端本地时去服务器上下载该资源, 直至网络应用提供给用户的所有资源 都被下载到客户端本地, 从而在用户终端设备上形成完整的客户端。 通过微客户端技术, 用 户可以边使用网络应用边下载网络应用的资源, 而无需等到完整客户端下载完成再使用网 络应用, 从而减小了用户需要下载的客户端中初始资源的数据量, 节省了用户下载客户端 所花费的时间。 发明内容 0005 但是, 随着网络应用的资源间依赖关系越来越复杂, 客户端在某些资源加载过程 中需。
17、要访问的资源也越来越多。 此时, 对于本次资源加载过程中所需要的资源, 客户端在资 源加载过程中往往并不是一次性地去请求访问所有的资源, 而是分多次去分别请求访问一 部分资源。具体地, 在资源加载过程中, 客户端先发起对一部分资源的访问请求, 访问到这 部分资源时对这部分资源进行解析, 之后再发起对下一部分资源的访问请求, 直至本次资 源加载过程所需要的资源都被下载, 完成本次资源加载过程。例如, 对于三维 (3D) 网络游 戏来说, 相对于二维 (2D) 网络游戏, 客户端在对一个角色或场景进行加载时, 3D 游戏需要 加载的资源会比 2D 游戏多很多。同样是对一个角色或场景进行加载, 2D。
18、 游戏的客户端通 说 明 书 CN 103997544 A 5 2/16 页 6 常仅需要加载图片文件, 3D 游戏的客户端则需要先获得角色或场景的模型描述文件, 通过 解析描述文件查找到需要访问的贴图、 动画、 特效等文件, 再获得查找到的贴图、 动画、 特效 等文件, 从而完成角色或场景的加载。而且, 3D 游戏中角色或场景通常都比较复杂, 可能由 多部分相互依赖的资源组成, 每部分资源都要分别经过描述文件的下载、 解析以及贴图、 动 画、 特效等文件的下载。 0006 由此可见, 对于像 3D 网络游戏这样资源间存在复杂依赖关系的网络应用, 在资源 加载过程中需要经历的 “解析下载” 链。
19、条比较长, 而对于首次进行的资源加载过程, 由于 现有技术中采用微端技术的客户端仅下载当前请求访问且本地不存在的资源, 就使得客户 端在资源加载过程中需要按照 “解析下载” 链条反复多次去下载其请求访问的资源, 从而 导致资源加载过程的延时较长, 并且, 由于往往每次请求访问的资源都无法占用所有的下 载线程, 也造成了下载线程的浪费。 0007 因此在现有技术中, 在对彼此间存在复杂依赖关系的资源进行首次加载时, 采用 微端技术的网络应用客户端由于仅下载当前请求访问的资源, 既导致了客户端加载资源的 速度较慢, 造成加载延时较长, 也导致了下载线程的浪费, 这是非常令人烦恼的过程。 0008 。
20、为此, 非常需要一种改进的资源下载的方法和设备, 以避免现有技术中由于采用 微端技术的网络应用客户端仅下载当前请求访问的资源, 而导致的客户端加载资源速度较 慢、 加载延时较长以及浪费下载线程的缺陷。 0009 在本上下文中, 本发明的实施方式期望提供一种资源下载的方法和设备。 0010 在本发明实施方式的第一方面中, 提供了一种资源下载的方法, 包括 : 截获客户端 对当前资源的访问请求 ; 通过资源关系索引文件, 查找与所述当前资源具有依赖关系且所 述客户端本地不存在的资源作为预测资源, 其中所述资源关系索引文件为预先依据网络应 用的完整客户端中各个资源之间依赖关系而生成的 ; 从可用于下。
21、载所述预测资源的未占用 线程中分配出第一线程, 并利用所述第一线程下载所述预测资源到所述客户端本地。 0011 在本发明实施方式的第二方面中, 提供了一种资源下载的设备, 包括 : 访问截获模 块, 用于截获对当前资源的访问请求 ; 预测资源查找模块, 用于通过资源关系索引文件, 查 找与所述当前资源具有依赖关系且所述客户端本地不存在的资源作为预测资源, 其中所述 资源关系索引文件为预先依据网络应用的完整客户端中各个资源之间依赖关系而生成的 ; 第一下载模块, 用于从可用于下载所述预测资源的未占用线程中分配出第一线程, 并利用 所述第一线程下载所述预测资源到所述客户端本地。 0012 根据本发。
22、明实施方式用于资源下载的方法和设备, 对采用微端技术的客户端来 说, 在客户端发起对当前资源的访问时, 可以通过预先依据完整客户端中资源之间依赖关 系而生成的资源关系索引文件, 查找出与当前请求访问的当前资源具有依赖关系且客户端 本地不存在的资源作为预测资源, 并可以利用从可用于下载该预测资源的未占用线程中分 配出的第一线程来下载该预测资源到客户端本地。因此, 由于与当前资源具有依赖关系的 预测资源通常是当前资源访问之后就要访问的资源, 一方面使得当前资源访问之后需要访 问且本地不存在的预测资源可以预先地在客户端发起对当前资源的访问请求时下载, 而无 需等到访问并解析当前资源之后客户端发起对预。
23、测资源的访问请求时再去下载, 从而显著 地减少了资源加载过程中客户端下载资源的次数, 加快了客户端资源首次加载的速度, 并 缩短了资源加载过程的加载延时, 另一方面使得请求访问时当前资源未占用的线程可以被 说 明 书 CN 103997544 A 6 3/16 页 7 用来下载预测资源, 从而避免了下载线程的浪费。 附图说明 0013 通过参考附图阅读下文的详细描述, 本发明示例性实施方式的上述以及其他目 的、 特征和优点将变得易于理解。 在附图中, 以示例性而非限制性的方式示出了本发明的若 干实施方式, 其中 : 0014 图 1 示意性地示出了本发明的实施方式的一个示例性应用场景的框架示意。
24、图 ; 0015 图 2 示意性地示出了本发明中资源下载的方法一实施例的流程图 ; 0016 图 3 示意性地示出了本发明实施例中资源间依赖关系示例的示意图 ; 0017 图 4 示意性地示出了本发明中资源下载的方法另一实施例的流程图 ; 0018 图 5 示意性地示出了本发明实施例中一个具体应用场景示例下的下载任务一处 理方式的示意图 ; 0019 图 6 示意性地示出了本发明中资源下载的方法又一实施例的流程图 ; 0020 图 7 示意性地示出了本发明中资源下载的方法再一实施例的流程图 ; 0021 图 8 示意性地示出了本发明实施例中待补丁数据合并一实施方式的实例示意图 ; 0022 图。
25、 9 示意性地示出了本发明中资源下载的设备一实施例的结构图 ; 0023 图 10 示意性地示出了本发明中资源下载的设备另一实施例的结构图 ; 0024 图 11 示意性地示出了本发明中资源下载的设备又一实施例的结构图 ; 0025 图 12 示意性地示出了本发明中资源下载的设备再一实施例的结构图 ; 0026 图 13 示意性地示出了本发明中资源下载的设备又再一实施例的结构图 ; 0027 在附图中, 相同或对应的标号表示相同或对应的部分。 具体实施方式 0028 下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解, 给出这 些实施方式仅仅是为了使本领域技术人员能够更好地理解进而。
26、实现本发明, 而并非以任何 方式限制本发明的范围。 相反, 提供这些实施方式是为了使本公开更加透彻和完整, 并且能 够将本公开的范围完整地传达给本领域的技术人员。 0029 本领域技术人员知道, 本发明的实施方式可以实现为一种系统、 装置、 设备、 方法 或计算机程序产品。因此, 本公开可以具体实现为以下形式, 即 : 完全的硬件、 完全的软件 ( 包括固件、 驻留软件、 微代码等 ), 或者硬件和软件结合的形式。 0030 根据本发明的实施方式, 提出了一种资源下载的方法和设备。 0031 在本文中, 需要理解的是, 所涉及的术语 “微端” 表示的是网络应用开发商提供的、 用于安装在用户设备。
27、上的客户端程序, 其在运行的过程中, 可以在发起访问请求时判断请 求访问的当前资源是否存在于其客户端本地, 从而将不在本地的当前资源从服务器下载到 本地。其中, 所提及的 “资源” 表示的是网络应用在其客户端程序中所具有的各种文件和数 据, 一个 “资源” 既可以对应一个文件, 也可以对应多个文件, 本文对此并不限定。此外, 附 图中的任何元素数量均用于示例而非限制, 以及任何命名都仅用于区分, 而不具有任何限 制含义。 0032 下面参考本发明的若干代表性实施方式, 详细阐释本发明的原理和精神。 说 明 书 CN 103997544 A 7 4/16 页 8 0033 发明概述 0034 本。
28、发明人发现, 现有的微端技术中, 客户端在发起访问请求时仅是去下载当前请 求访问的资源, 因此, 如果一个首次进行的资源加载过程中需要加载的资源彼此间具有复 杂依赖关系, 客户端就需要按照访问的顺序反复多次去下载, 每一次下载的仅是客户端当 前请求访问的资源, 而往往下载客户端当前请求访问的资源并不会占用所有的线程, 这就 导致资源加载过程中无法同时利用所有的线程下载需要加载的资源, 从而不仅使得客户端 加载资源的速度较慢、 加载延时较长, 还造成了下载线程的浪费。 0035 基于上述分析, 本发明的基本思想在于 : 为了使得资源加载过程中可以尽可能同 时利用更多的线程来下载资源, 而不是仅下。
29、载客户端当前请求访问的资源, 可以预先地确 定出哪些资源是该资源加载过程中需要访问的资源, 也即可以预测出客户端当前还未请求 访问但很快就会请求访问的资源, 从而利用下载当前请求访问的资源之外未占用的线程来 下载预测出的资源, 这样不仅可以使得资源加载过程中需要加载的资源下载速度加快, 从 而加快资源加载的速度并缩短加载延时, 而且还使得下载线程得到了充分的利用。 其中, 由 于资源加载过程中需要加载的资源彼此间具有依赖关系, 因此, 预测的方式, 具体可以是通 过预先依据完整客户端中资源之间依赖关系而生成的资源关系索引文件, 查找与当前请求 访问的当前资源具有依赖关系的资源作为预测资源。 0。
30、036 需要说明的是, 在本文中, 术语 “当前资源” 、“预测资源” 等表示的是客户端对资源 需求的紧急程度。例如,“当前资源” 表示的是客户端发起访问请求所针对的资源。又如, “预测资源” 表示的是通过资源关系索引文件而查找出的与当前资源具有依赖关系的资源。 0037 在介绍了本发明的基本原理之后, 下面具体介绍本发明的各种非限制性实施方 式。 0038 应用场景总览 0039 首先参考图1, 图1是本发明的实施方式的一个示例性应用场景的框架示意图。 其 中, 用户通过用户设备上的客户端 102 与提供网络应用服务的服务器 101 进行交互。本领 域技术人员可以理解, 图 1 所示的框架示。
31、意图仅是本发明的实施方式可以在其中得以实现 的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。 0040 需要注意的是, 此处的用户设备可以是现有的、 正在研发的或将来研发的、 能够通 过任何形式的有线和 / 或无线连接 ( 例如, Wi-Fi、 LAN、 蜂窝、 同轴电缆等 ) 实现其上客户 端 102 与服务器 101 交互的任何用户设备, 包括但不限于 : 现有的、 正在研发的或将来研发 的智能手机、 非智能手机、 平板电脑、 膝上型个人计算机、 桌面型个人计算机、 小型计算机、 中型计算机、 大型计算机等。 0041 还需要注意的是, 此处的服务器 101 仅是现有的、 。
32、正在研发的或将来研发的、 能够 向用户提供网络应用服务的设备的一个示例。本发明的实施方式在此方面不受任何限制。 0042 基于图1所示的框架, 客户端102可以先截获对当前资源的访问请求, 再通过资源 关系索引文件, 查找与所述当前资源具有依赖关系且所述客户端本地不存在的资源作为预 测资源, 其中所述资源关系索引文件为预先依据网络应用的完整客户端中各个资源之间依 赖关系而生成的、 记录具有依赖关系的资源间对应关系的文件。然后, 客户端 102 可以从可 用于下载所述预测资源的未占用线程中分配出第一线程, 并利用所述第一线程下载所述预 测资源到所述客户端本地。 说 明 书 CN 10399754。
33、4 A 8 5/16 页 9 0043 可以理解的是, 本发明的应用场景中, 虽然此处和下面将本发明实施方式的动作 描述为由客户端 102 执行, 但是这些动作也可以部分由客户端 102 执行、 部分由服务器 101 执行, 或者完全由服务器 101 执行。本发明在执行主体方面不受限制, 只要执行了本发明实 施方式所公开的动作即可。 0044 示例性方法 0045 下面结合图 2 8 的应用场景, 参考图 1 来描述根据本发明示例性实施方式的用 于资源下载的方法。需要注意的是, 上述应用场景仅是为了便于理解本发明的精神和原理 而示出, 本发明的实施方式在此方面不受任何限制。 相反, 本发明的实。
34、施方式可以应用于适 用的任何场景。 0046 参见图 2, 示出了本发明中资源下载的方法一实施例的流程图。在本实施例中, 例 如具体可以包括如下步骤 : 0047 步骤 201、 截获对当前资源的访问请求。 0048 在采用微端技术的客户端运行过程中, 如果其发起访问请求, 则可以截获该访问 请求, 从而确定该访问请求所针对的当前资源。 可以理解的是, 通过截获访问请求而确定当 前资源, 一方面可以是为了在当前资源不存在的情况下从服务器上下载当前资源到客户端 本地, 另一方面则可以是为了通过当前资源来预测客户端接下来将要访问的资源, 从而实 现预测资源在客户端请求访问之前的预先下载。 0049。
35、 步骤 202、 通过资源关系索引文件, 查找与所述当前资源具有依赖关系且所述客户 端本地不存在的资源作为预测资源, 其中所述资源关系索引文件为预先依据网络应用的完 整客户端中各个资源之间依赖关系而生成的。 0050 其中, 资源关系索引文件中记录的可以是具有依赖关系的资源之间的对应关系, 其可以是预先放置在作为微端的客户端中提供给用户设备下载, 也可以是用户设备上的客 户端在运行过程中从服务器上下载的。 0051 可以理解的是, 资源关系索引文件需要预先依据网络应用的完整客户端中各个资 源之间依赖关系生成。 0052 其中, 资源之间具有依赖关系, 可以是指为了实现一个资源加载过程而需要加载。
36、 的资源。这些具有依赖关系的资源需要分多次访问, 各个资源指示了在其访问之后需要访 问的资源。也即, 通过对各个资源进行解析, 可以确定在其访问之后需要访问的是哪些资 源。 0053 而在本实施例中, 可以预先通过对完整客户端的各个资源进行解析, 确定在资源 加载过程中表示各个资源之间访问顺序的依赖关系, 并依据此依赖关系而生成资源关系索 引文件, 而客户端在运行过程中, 可以通过资源关系索引文件来查找出与当前资源具有依 赖关系的资源, 这些资源即是客户端访问当前资源之后可能将要访问的资源, 因此, 将这些 查找出的资源作为预测资源并在访问当前资源的同时利用未占用线程去下载预测资源, 就 可以。
37、使得客户端在访问预测资源时无需再去下载, 从而缩短了整个加载过程的加载延时。 0054 例如, 对于网络游戏中一个实体的加载过程, 其实体一般由模型 (model) 组成, 而 模型一般是由顶点、 贴图组成, 有些模型还具有特效。对于网络游戏中的模型加载, 图 3 示 出了一种可能的资源间依赖关系示例的示意图。 其中, model和visual是描述文件, 这两者 是用于标识和描述模型, 在客户端引擎中通常用 xml 格式保存 ; fx 是特效文件, primitives 说 明 书 CN 103997544 A 9 6/16 页 10 是顶点文件、 bmp是贴图文件。 可以理解的是, 图3中。
38、的两个模型具有一个共用的贴图文件, 这表示在完整客户端的资源中同一个贴图文件是可以被多个模型共用的。 0055 以图 3 中的任意一个模型为例, 其所用的资源可以看成是一颗树。网络游戏的客 户端在加载这一模型时, 可以从这棵树的根节点读起, 每读一个节点就去解析该节点的文 件, 从而获取该节点的子节点信息, 再去读入子节点, 直到整棵树完全读入, 这样就可以构 建出该模型。例如, 假设图 3 左边的模型为 a1 模型, 其 model 文件为 a1.model, 其 visual 文件为a1.visual, 其fx文件为flash.fx, 其primitives文件为a1.primitives。
39、, 其bmp文 件为 skin.bmp, 则 : 0056 a1.model 的内容可以为 : 0057 0058 0059 a1 0060 0061 0062 a1.visual 的内容可以为 : 0063 0064 0065 flash 0066 0067 0068 al 0069 0070 0071 skin.bmp 0072 0073 0074 由此可见, 与 a1.model 文件具有依赖关系的资源可以为 a1.visual 文件, 以及可 以还包括 flash.fx、 a1.primitives 和 skin.bmp 文件。进一步而言, 如果客户端发起访问 请求所针对的当前资源是 。
40、a1.model, 那么通过资源关系索引文件查找出的预测资源可以包 括 a1.visual 以及 flash.fx、 a1.primitives、 skin.bmp。 0075 步骤 203、 从可用于下载所述预测资源的未占用线程中分配出第一线程, 并利用所 述第一线程下载所述预测资源到所述客户端本地。 0076 参考前述 a1 模型的示例, 假设在客户端处于微端的情况下, a1 模型的所有文件 都在网络游戏的服务器上。此时, 在对 a1 模型进行首次加载的过程中, 如果采用现有技 术, 客户端仅下载当前发起访问的当前资源, 那么 a1 模型的加载过程可以表示为 : 下载 al.model 解。
41、析 a1.model 下载 al.visual 解析 a1.visual 并行下载 flash.fx、 al.primitives 和 skin.bmp 加载完成 ; 而在本实施例中, 客户端在对当前资源发起访问 的同时, 除了下载作为当前资源的 a1.model, 还可以同时利用可用于下载预测资源未占用 线程来下载作为预测资源的 a1.visual、 flash.fx、 a1.primitives、 skin.bmp, 那么在可 说 明 书 CN 103997544 A 10 7/16 页 11 用线程数量理想的情况下, a1 模型的加载过程可以表示为 : 下载 a1.model、 a1.v。
42、isual、 flash.fx、 a1.primitives、 skin.bmp 加载文件。进一步考虑到客户端本地文件的加载及 解析速度非常快使得本地文件的加载和解析所花费的时间可以忽略不计, 则 a1 模型加载 时主要的加载延时是由文件下载造成。假设每一次文件下载需要花费的时间为 100ms, 对 于现有技术来说, 由于其客户端仅下载当前发起访问的当前资源, 其共需要经过三次下载 ( 实际上总的耗时时间与资源树的层数有关 ), 其 a1 模型的加载过程需要耗时 300ms ; 对于 本实施例来说, 其客户端在发起对当前资源访问时可以下载预测资源, 其共需要经过一次 并行下载, 其 a1 模型。
43、的加载过程需要耗时 100ms。由此可见, 本实施例相对于现有技术来 说, 可以大大缩短资源加载过程的时延。 0077 需要说明的是, 本实施例中用于下载预测资源的第一线程是从可用于下载该预测 资源的未占用线程中分配出来的。由于通常用户在使用网络应用时, 客户端加载资源的情 况比较复杂, 资源间依赖关系也比较复杂, 而网络带宽往往是一定的, 所以, 因此, 在本实施 例的一些实施方式中, 在客户端对当前资源发起访问时下载预测资源的基础上, 还可以考 虑需要下载的当前资源数量、 预测资源数量、 网络带宽的可用线程数量以及用户在网络游 戏中的需求之间的关系, 来确定用于下载预测资源的第一线程的分配。
44、方式。 0078 在本实施例的一些实施方式中, 考虑到客户端可能同时具有多个预测资源需要下 载, 而资源下载任务可以被认为是一种阻塞型任务, 有时由于在先产生的资源下载任务占 用了大量线程, 使得可用于下载预测资源的未占用线程数量并不能满足在后产生的所有预 测资源的下载任务需求, 为此, 可以建立一个仅用于存储未完成的预测资源下载任务的第 一任务集合。在客户端加载资源的过程中, 可以将所有预测资源的下载任务都加入该第一 任务集合, 然后利用可用于下载预测资源的未占用线程为该第一任务集合中的下载任务分 配线程, 分得线程的下载任务可以从该第一任务集合中取出, 并利用分得的线程完成对该 下载任务的。
45、预测资源的下载。 具体地, 步骤203例如可以包括 : 将下载所述预测资源的第一 下载任务加入到第一任务集合中 ; 响应于所述第一下载任务分得所述第一线程, 从所述第 一任务集合中取出所述第一下载任务, 并利用所述第一线程下载所述预测资源到所述客户 端本地。其中, 第一任务集合例如可以是一个任务队列。可以理解的是, 通过将所有预测资 源的下载任务加入第一任务集合, 可以实现对预测资源下载任务的线程分配进行管理, 从 而避免可用于下载预测资源的未占用线程数量不够对预测资源的下载造成影响。 0079 进一步而言, 考虑到同一时刻需要下载的多个预测资源在接下来将要被加载的可 能性并不相同 ( 依赖关。
46、系越远则其在接下来将要被加载的可能性越小 ), 有些在某一时刻 加入到第一任务集合的预测资源下载任务, 在其下一时刻还未分配到线程, 客户端可能就 暂时不需要访问该预测资源了, 但此时第一任务集合又加入了新的预测资源下载任务, 新 加入下载任务的预测资源则是客户端接下来将要访问的。例如, 在网络游戏的客户端运行 过程中, 用户的玩家角色快速通过第一区域, 如果第一区域还未加载完毕玩家角色就已经 移动到了第二区域, 由于客户端此时需要加载的是第二区域的场景而暂时不需要再加载第 一区域的场景, 因此, 相对于基于第一区域未分得线程的预测资源, 客户端此时需要下载的 是基于第二区域的预测资源。 由此。
47、可见, 相对于在先产生的预测资源的下载任务, 在后产生 的预测资源的下载任务是客户端更急需执行的, 因此, 在前述预测资源下载任务加入第一 任务集合进行处理的基础上, 还可以按照各个下载任务加入第一任务集合的时间由后到先 说 明 书 CN 103997544 A 11 8/16 页 12 的顺序为所述第一任务集合中的各个下载任务分配线程。具体地, 步骤 203 例如可以包括 : 将下载所述预测资源的第一下载任务加入到第一任务集合中 ; 按照第一任务集合的分配顺 序, 从可用于下载所述预测资源的未占用线程中为所述第一任务集合中的各个下载任务分 配线程 ; 响应于所述第一下载任务分得所述第一线程,。
48、 从所述第一任务集合中取出所述第 一下载任务, 并利用所述第一线程下载所述预测资源到所述客户端本地。 其中, 所述第一任 务集合的分配顺序为第一任务集合中的各个下载任务按照各自加入第一任务集合的时间 由后到先排列所形成的顺序。 此时, 对于一个第一下载任务来说, 在该第一下载任务为最后 一个加入所述第一任务集合的下载任务且当前存在可用于下载预测资源的未占用线程的 情况下, 该第一下载任务可以分得所述第一线程。 也就是说, 该第一任何集合的任务队列中 的任务是后进先出 (LIFO) 的。 0080 在本实施例的另一些实施方式中, 考虑到有时客户端在为所有当前资源和所有预 测资源分配了线程之后, 。
49、还具有未占用线程, 为了避免这一部分未占用线程的浪费, 并且也 为了更快地将完整客户端下载完毕, 还可以响应于所述预测资源已分得第一线程且还存在 可用于下载随机资源的未占用线程, 随机选取所述客户端本地不存在的资源作为随机资 源, 并利用所述可用于下载随机资源的未占用线程下载所述随机资源。 0081 在本实施例的又一些实施方式中, 考虑到客户端可能同时在执行多个资源加载过 程 ( 如网络游戏的客户端在同时加载多个模型或实体 ), 当网络带宽所提供的所有线程并 不足以保证所有当前资源和所有预测资源都能够同时分得线程时, 由于当前资源是客户端 当前发起访问所请求的资源, 是相对于预测资源来说客户端更急需的资源, 因此, 还可以优 先为当前资源的下载任务分配线程, 而预测资源可以是在当前资源分配线程之后再分配线 程。对于这类实施方式, 本发明将在后续实施例中介绍, 在此不再赘述。 0082 可以理解的是, 考虑到有时在先分配的预测资源和随机资源可。