一种文件下载方法及装置与流程

文档序号:13534311阅读:167来源:国知局
一种文件下载方法及装置与流程

本发明涉及网络传输技术领域,特别涉及一种文件下载方法及装置。



背景技术:

云盘作为解决现代企业数据存储的一种方式越来越受到重视和推广,目前市面上相关产品也很多,如百度云盘、360云盘等等。云盘的原理其实就是网络公司将其服务器的硬盘或硬盘阵列中的一部分容量分给注册用户使用,注册用户通过客户端上传文件到网络服务器上、从网络服务器下载文件,也可以说注册用户通过客户端上传文件到云盘上、从云盘下载文件。

现有技术中,从云盘下载文件的过程具体为:注册用户通过客户端向网络服务器即云盘发送下载文件的请求,云盘根据上述请求确定文件,并向客户端发送该文件,当云盘将该文件的全部数据发送至客户端后,则可以认为文件下载完毕。实际应用中,虽然可以应用上述方式成功下载文件,但是,应用上述方式下载文件时,只有云盘将文件的全部数据发送至客户端,也就是客户端接收到云盘发送的文件的全部数据时,才认为文件下载完成,这样在要下载的文件较大或者网络状态较差的情况下,完成文件下载所需要的时间较长。



技术实现要素:

本发明实施例的目的在于提供一种文件下载方法及装置,以缩短文件下载时间,提升下载性能。

为达到上述目的,本发明实施例公开了一种文件下载方法,所述方法包括步骤:

向服务器发送下载目标文件的请求;

接收所述服务器根据所述请求反馈的所述目标文件的第一数据块信息,其中,所述目标文件包括至少一个数据块,所述第一数据块信息为:所述目标文件所包含数据块的数据块信息;

根据所述第一数据块信息,分别判断本地磁盘中是否缓存有所述第一数据块信息对应的每一数据块,如果是,从所述本地磁盘获取该数据块,否则,从所述服务器获取该数据块;

将所获取的数据块存储至所述目标文件在本地磁盘中对应的存储区域。

可选的,所述方法还包括:

将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述将从所述服务器获取的数据块缓存在本地磁盘中,包括:

判断所述本地磁盘中缓存的数据量是否达到预设阈值;

如果否,将从所述服务器获取的数据块缓存在本地磁盘中;

如果是,确定本地磁盘中要删除的数据块,并将所述要删除将的数据块删除后,将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述将从所述服务器获取的数据块缓存在本地磁盘中,包括:

根据从所述服务器获取的数据块的数据块信息,确定数据块名称,并基于所确定的数据块名称,将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述根据所述第一数据块信息,分别判断本地磁盘中是否缓存有所述第一数据块信息对应的每一数据块,包括:

根据所述第一数据块信息和数据库中保存的数据块索引关系,分别判断所述数据库中是否保存有所述第一数据块信息对应的每一数据块的缓存位置,其中,所述数据块索引关系为:数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置之间的对应关系;

如果是,判定本地磁盘阵列中缓存有该数据块;

否则,判定本地磁盘阵列中没有缓存该数据块;

所述从所述本地磁盘获取该数据块,包括:

根据所述数据库中保存的该数据块在本地磁盘阵列中的缓存位置,从所述本地磁盘阵列获取该数据块。

可选的,所述方法还包括:

将目标数据块缓存在本地磁盘阵列中,其中,所述目标数据块为:从所述服务器获取的数据块;

确定所述目标数据块的数据块信息与所述目标数据块在本地磁盘阵列中的缓存位置对应的数据块索引关系,并将所确定的数据块索引关系保存至所述数据库中。

可选的,在所述第一数据块信息为所述目标文件的部分数据块的数据块信息的情况下,所述方法还包括:

重复执行以下步骤直至获得所述目标文件的全部数据块:

接收所述服务器根据所述请求反馈的所述目标文件的第二数据块信息,其中,所述第二数据块信息为:所述目标文件的部分数据块的数据块信息;

根据所述第二数据块信息,分别判断本地磁盘中是否缓存有所述第二数据块信息对应的每一数据块,如果是,从所述本地磁盘获取该数据块,否则从所述服务器获取该数据块。

可选的,所述数据块的数据块信息为所述数据块的sha1值和/或md5值。

为达到上述目的,本发明实施例还公开了一种文件下载装置,所述装置包括:

请求发送模块,用于向服务器发送下载目标文件的请求;

第一数据块信息接收模块,用于接收所述服务器根据所述请求反馈的所述目标文件的第一数据块信息,其中,所述目标文件包括至少一个数据块,所述第一数据块信息为:所述目标文件所包含数据块的数据块信息;

第一数据块判断模块,用于根据所述第一数据块信息,分别判断本地磁盘中是否缓存有所述第一数据块信息对应的每一数据块,如果是,执行第一数据块获取模块,否则,执行第二数据块获取模块;

所述第一数据块获取模块,用于从所述本地磁盘获取该数据块;

所述第二数据块获取模块,用于从所述服务器获取该数据块;

数据块存储模块,用于将所获取的数据块存储至所述目标文件在本地磁盘中对应的存储区域。

可选的,所述装置还包括:

第一数据块缓存模块,用于将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述第一数据块缓存模块,包括:

数据量判断子模块,用于判断所述本地磁盘中缓存的数据量是否达到预设阈值;

第一数据块缓存子模块,用于在判定所述本地磁盘中缓存的数据量没有达到预设阈值的情况下,将从所述服务器获取的数据块缓存在本地磁盘中;

第二数据块缓存子模块,用于在判定所述本地磁盘中缓存的数据量达到预设阈值的情况下,确定本地磁盘中要删除的数据块,并将所述要删除本的数据块删除后,将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述第一数据块缓存模块,用于:

根据从所述服务器获取的数据块的数据块信息,确定数据块名称,并基于所确定的数据块名称,将从所述服务器获取的数据块缓存在本地磁盘中。

可选的,所述所述第一判断模块,用于:

根据所述第一数据块信息和数据库中保存的数据块索引关系,分别判断所述数据库中是否保存有所述第一数据块信息对应的每一数据块的缓存位置,其中,所述数据块索引关系为:数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置之间的对应关系;

如果是,判定本地磁盘阵列中缓存有该数据块;

否则,判定本地磁盘阵列中没有缓存该数据块;

所述第一数据块获取模块,用于:

根据所述数据库中保存的该数据块在本地磁盘阵列中的缓存位置,从所述本地磁盘阵列获取该数据块。

可选的,所述装置还包括:

第二数据块缓存模块,用于将目标数据块缓存在本地磁盘阵列中,其中,所述目标数据块为:从所述服务器获取的数据块;

数据块索引关系确定保存模块,用于确定所述目标数据块的数据块信息与所述目标数据块在本地磁盘阵列中的缓存位置对应的数据块索引关系,并将所确定的数据块索引关系保存至所述数据库中。

可选的,在所述第一数据块信息为所述目标文件的部分数据块的数据块信息的情况下,所述装置还包括:

第二数据块信息接收模块,用于接收所述服务器根据所述请求反馈的所述目标文件的第二数据块信息,其中,所述第二数据块信息为:所述目标文件的部分数据块的数据块信息;

第二数据块判断模块,用于根据所述第二数据块信息,分别判断本地磁盘中是否缓存有所述第二数据块信息对应的每一数据块,如果是,执行第三数据块获取模块,否则,执行第四数据块获取模块;

所述第三数据块获取模块,用于从所述本地磁盘获取该数据块;

所述第四数据块获取模块,用于从所述服务器获取该数据块。

可选的,所述数据块的数据块信息为所述数据块的sha1值和/或md5值。

综上可知,本发明实施例所提供的一种文件下载方法及装置,向服务器发送下载目标文件的请求,接收服务器根据请求反馈的目标文件的第一数据块信息;其中,目标文件包括至少一个数据块,第一数据块信息为:目标文件所包含数据块的数据块信息;根据第一数据块信息,分别判断本地磁盘中是否缓存有第一数据块信息对应的每一数据块,如果是,从本地磁盘获取该数据块,否则,从服务器获取该数据块;将所获得的所有目标数据块存储至所述目标文件在本地对应的存储区域。与现有技术相比,本发明实施例所提供的方案,可以从本地磁盘中获取目标文件中的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中文件下载方法的信令流程示意图;

图2为本发明实施例提供的文件下载方法的信令流程示意图;

图3为本发明实施例提供的文件下载方法的第一种流程示意图;

图4为本发明实施例提供的文件下载方法的第二种流程示意图;

图5为本发明实施例提供的文件下载方法的第三种流程示意图;

图6为本发明实施例提供的文件下载装置的第一种结构示意图;

图7为本发明实施例提供的文件下载装置的第二种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

先对本申请文件中涉及到的技术用语进行简单介绍。

数据块:通常将文件按照一定的规则划分为多个数据块,在上传或者下载文件时,文件以数据块的形式进行传输,当然,文件也可以以数据块的形式进行保存。数据块也被称为文件块。

文件块缓存技术:一种提高文件传输速度的技术,通过在本地设置缓存机制,将文件的数据块缓存在本地磁盘中,以便在本地进行关于数据块的后续操作中快速获取对应的数据块。

磁盘阵列是由多个磁盘组合而成的一个容量巨大的磁盘组,本地磁盘阵列是在客户端所在的终端部署的磁盘阵列,也就是在本地部署磁盘阵列,以扩大本地磁盘的存储容量。本地磁盘阵列可以看作是本地磁盘的一种具体表现形式。

下面从与现有技术进行对比的角度对本发明进行介绍。

图1为现有技术中文件下载方法的信令流程示意图。

现有技术中,服务器接收到客户端发送的下载目标文件的请求(s101)后,根据请求确定目标文件,并向客户端发送目标文件所包含的所有数据块(s102),其中,目标文件被预先划分为多个数据块。当客户端接收到目标文件的所有数据块后,认为目标文件下载完毕。

由上述描述可见,现有技术中,在从服务器下载目标文件时,目标文件是以数据块的形式发送给客户端的。即使在之前的操作中已经获得过目标文件中的数据块,每次下载同一个目标文件时仍然需要通过网络从服务器获得该目标文件的全部数据块。而本发明实施例提供的文件下载方法,可以将目标文件所包含的数据块缓存在本地磁盘中,之后若用户在客户端发起对同一目标文件的下载请求时,服务器将该目标文件所包含数据块的数据块信息发送给客户端,只需从本地磁盘的缓存区获取该目标文件的全部数据块,而不需再从服务器获取该目标文件的全部数据块。另外,若用户在客户端发起对另一新文件的下载请求时,如果该新文件中有某一数据块的数据块信息与本地磁盘中缓存的某一数据块的数据块信息一致,那么只需从本地磁盘获取该某一数据块而不需从服务器获取该某一数据块。

具体的,图2为本发明实施例提供的文件下载方法的信令流程示意图。

应用本发明实施例提供的文件下载方法进行文件下载时,客户端向服务器发送下载目标文件的请求(s201),服务器根据请求确定目标文件后,向客户端发送目标文件所包含的数据块的数据块信息(s202),客户端根据数据块信息,分别判断本地磁盘中是否缓存有该数据块信息对应的每一数据数据块,如果是,从本地磁盘获取该数据块,否则,从服务器获取该数据块(s203)。

可见,应用本发明实施例提供的方案进行文件下载时,不需要从服务器获取请求下载的目标文件的所有数据块,例如,在本地磁盘中缓存一定量的数据块后,当客户端请求下载的目标文件的数据块已经缓存在本地磁盘中,则只需从本地磁盘获取对应的数据块即可。与从服务器获取目标文件的全部数据块相比,能够减少下载文件的时间,提高下载性能。

为解决现有技术问题,本发明实施例提供了一种文件下载方法及装置。下面首先对本发明实施例所提供的一种文件下载方法进行详细说明。

图3为本发明实施例提供的文件下载方法的第一种流程示意图,该方法包括:

s301,向服务器发送下载目标文件的请求。

实际应用中,当用户需要从服务器上下载目标文件时,需要通过客户端向服务器发送下载目标文件的请求,由于客户端安装在对应的终端上,因此也可以说用户通过终端向服务器发送下载目标文件的请求。其中,下载目标文件的请求中可以包含目标文件的标识。

s302,接收服务器根据请求反馈的目标文件的第一数据块信息,其中,目标文件包括至少一个数据块,第一数据块信息为:目标文件所包含数据块的数据块信息。

实际应用中,目标文件在服务器中可以是以数据块的形式进行保存的,每个数据块携带有各自的数据块信息,其中,数据块信息中可以包含该数据块的标识、该数据块在目标文件中的序号等等。服务器首先向客户端反馈目标文件所包含数据块的数据块信息,便于客户端根据数据块信息判断本地磁盘中是否缓存有该数据块信息对应的数据块。在另一种具体的实现方式中,还可以是服务器在接收到客户端发送的下载请求后,按照特定的划分规则将请求的目标文件划分为至少一个数据块。

s303,根据第一数据块信息,分别判断本地磁盘中是否缓存有第一数据块信息对应的每一数据块,如果是,执行s304,否则,执行s305。

s304,从本地磁盘获取该数据块。

s305,从服务器获取该数据块。

服务器反馈目标文件的数据块信息后,针对反馈的数据块信息,客户端轮询每个数据块的数据块信息,根据每个数据块的数据块信息判断本地磁盘中是否缓存有该数据块信息对应的数据块。

每一个数据块都有各自唯一的校验码,因此可以将校验码作为数据块的标识。在一个优选实施例中,数据块的数据块信息可以为所述数据块的sha1值和/或md5值。

根据目标文件的数据块的sha1值和/或md5值,查找本地磁盘中是否有对应sha1值和/或md5值的数据块,即可判断该数据块是否已经被缓存。如果判断出该数据块已经缓存在本地磁盘中,则直接获取本地磁盘中的该数据块,否则,根据该数据块的sha1值和/或md5值从服务器获取该数据块。

在本发明的一个优选实施例中,该文件下载方法还可以包括:将从服务器获取的数据块缓存在本地磁盘中。这样,便于在后续进行下载文件的操作时,若文件中包含该数据块,可以直接从本地磁盘中获取该数据块,缩短下载时间。

本领域内的技术人员可以理解的是,本地磁盘能够提供的缓存资源是有限的,为了不影响客户端所在终端正常运行,本地磁盘所缓存数据块的数据量不能过大。

鉴于上述情况,将从服务器获取的数据块缓存在本地磁盘中,包括:

判断本地磁盘中缓存的数据量是否达到预设阈值;

如果否,将从服务器获取的数据块缓存在本地磁盘中;

如果是,确定本地磁盘中要删除的数据块,并将所述要删除的数据块删除后,将从服务器获取的数据块缓存在本地磁盘中。

需要说明的是,在本地磁盘中缓存的数据块并不是越多越好。因为缓存的数据块越多,在判断本地磁盘中是否缓存有某一数据块的时间也会越多。当本地缓存的数据块达到一定数量时,查询本地磁盘是否缓存有某一数据块所用的时间就会比从服务器下载该数据块的时间相等,甚至更多。在这种情况下,基于文件块缓存技术的文件下载方法就不会缩短文件下载的时间,并且本地磁盘的容量也限制了本地磁盘中可缓存的数据量。

因此,为解决上述问题,可以预先设置本地磁盘中可缓存的数据量的最大值。在将从服务器获取的数据块缓存在本地磁盘中之前,先判断本地磁盘中缓存的数据量是否达到预设阈值,如果没有,就直接将从服务器获取的数据块缓存在本地磁盘中。如果本地磁盘中缓存的数据量达到了预设阈值,确定本地磁盘中要删除的数据块,并将要删除数据块删除后,再将从服务器获取的数据块缓存在本地磁盘中。

具体的,由于在本地磁盘中缓存时间最早的数据块被再次下载的概率相对来说比较小,因此可以将本地磁盘中缓存时间最早的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块的访问频率,将访问频率最小的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块所属的文件是否为目标文件,将不属于目标文件的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块所属的文件的重要程度,将重要程度最低的文件的数据块确定为要删除的数据块。

当然,本申请只是以上述为例进行说明,实际应用中,还可以根据其他原则确定本地磁盘中要删除的数据块,本申请并不对此进行限定。

在另一种实现方式中,如果本地磁盘中缓存的数据量达到了预设阈值,也可以不进行将从服务器获取的数据块缓存在本地磁盘中的处理操作。

具体的,将从服务器获取的数据块缓存在本地磁盘中,还可以根据从服务器获取的数据块的数据块信息,确定数据块名称,并基于所确定的数据块名称,将从服务器获取的数据块缓存在本地磁盘中,以便于在后续的下载文件操作时查找相应的数据块。例如,可以将数据块的sha1值和/或md5值作为数据块名称。

s306,将所获取的数据块存储至目标文件在本地磁盘中对应的存储区域。

由前述描述可以知道,数据块信息中可以包含该数据块在目标文件中的序号,因此,可以根据数据块信息中包括的数据块在目标文件中的序号,将所获取的数据块存储至目标文件在本地磁盘中对应的存储区域。

实际应用中,在向客户端发送数据块信息时,可以是按照数据块的顺序来发送数据块信息的,那么客户端在接收到数据块信息后,也是按照发送顺序来处理每个数据块对应的数据块信息,因此最终获取数据块也是按照数据块的顺序来获取的,这样,可以按照获取数据块的顺序,将所获取的数据块存储至目标文件在本地磁盘中对应的存储区域。

由以上可见,本发明实施例提供的方案中,在每次进行文件下载操作时,分别判断本地磁盘中是否缓存该文件对应的每一数据块,如果是,从本地磁盘获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域,并且,将从服务器获取的数据块缓存在本地磁盘。与现有技术相比,本发明实施例所提供的方案,由于本地磁盘中缓存有一定数量的数据块,因此,对于目标文件中已经缓存在本地磁盘中的数据块,可以直接读取本地磁盘以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

在本发明的一个具体实施例中,为了扩大本地磁盘的存储容量,提高在本地磁盘进行数据传输的速度,还可以在客户端所在的终端部署本地磁盘阵列和数据库。具体的,本地磁盘阵列用来缓存文件的数据块,由于缓存的数据块的数量较多,为提高在本地磁盘阵列中读取缓存的数据块的速度,在本地部署磁盘阵列时,通常还需要在本地部署缓存数据库,用于保存数据块索引关系,该数据块索引关系是根据数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置确定的。

具体的,参见图4,图4为本发明实施例所提供的文件下载方法的第二种流程示意图。基于图3所提供的实施例,本发明实施例所提供的文件下载方法中,根据第一数据块信息,分别判断本地磁盘中是否缓存有第一数据块信息对应的每一数据块(s303),具体为:

s303a,根据第一数据块信息和数据库中保存的数据块索引关系,分别判断数据库中是否保存有第一数据块信息对应的每一数据块的缓存位置,其中,数据块索引关系为:数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置之间的对应关系。

如果数据库中保存有数据块信息对应的某一数据块的缓存位置,则可以判定本地磁盘阵列中缓存有该数据块;否则,判定本地磁盘阵列中没有缓存该数据块。

从前述描述可以知道,由于本地磁盘阵列中缓存的数据块数量较多,在数据库中保存数据块索引关系,以便于快速判断本地磁盘阵列中是否缓存有对应的数据块,并且快速查找到该数据块的缓存位置。

由于数据块索引关系为数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置之间的对应关系,因此,可以根据数据块索引关系中是否包含某一数据块的数据块信息,判断该某一数据块是否缓存在本地磁盘阵列中。

从本地磁盘获取该数据块(s304),具体为:

s304a,根据数据库中保存的该数据块在本地磁盘阵列中的缓存位置,从本地磁盘阵列获取该数据块。

实际应用中,如果判定某一数据块缓存在本地磁盘阵列中,还可以根据数据块索引关系,获得该某一数据块在本地磁盘阵列中的缓存位置。例如,本地磁盘阵列包含10个磁盘,且预先设置了每个磁盘的标识信息,根据数据块索引关系,可以获取该某一数据块在本地磁盘阵列中的缓存位置,即缓存该某一数据块的磁盘的标识信息,根据缓存该某一数据块的磁盘的标识信息,从该磁盘中获取该某一数据块。

在本发明的一个优选实施例中,该文件下载方法还可以包括:

将目标数据块缓存在本地磁盘阵列中,其中,所述目标数据块为:从服务器获取的数据块;

确定目标数据块的数据块信息与目标数据块在本地磁盘阵列中的缓存位置对应的数据块索引关系,并将所确定的数据块索引关系保存至数据库中。

在实际应用中,将从服务器获取的数据块缓存在本地磁盘阵列中,便于在后续进行下载文件的操作时,若文件中包含该数据块,可以直接从本地磁盘阵列中获取该数据块,缩短下载时间。具体的,可以先判断本地磁盘阵列中缓存的数据量是否达到预设阈值,如果否,将从服务器获取的数据块缓存在本地磁盘阵列中,如果是,确定本地磁盘阵列中要删除的数据块,并将要删除数据块删除后,将从服务器获取的数据块缓存在本地磁盘阵列中。

具体的,由于在本地磁盘中缓存时间最早的数据块被再次下载的概率相对来说比较小,因此可以将本地磁盘中缓存时间最早的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块的访问频率,将访问频率最小的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块所属的文件是否为目标文件,将不属于目标文件的数据块确定为要删除的数据块;

还可以根据本地磁盘中已缓存的数据块所属的文件的重要程度,将重要程度最低的文件的数据块确定为要删除的数据块。

当然,本申请只是以上述为例进行说明,实际应用中,还可以根据其他原则确定本地磁盘中要删除的数据块,本申请并不对此进行限定。

需要说明的是,在确定本地磁盘阵列中要删除的数据块,并将要删除数据块删除后,还需要将数据库中该数据块对应的数据块索引关系删除,以保证数据块保存的数据块索引关系与本地磁盘阵列中缓存的数据块的一致性。在另一种实现方式中,如果本地磁盘阵列中缓存的数据量达到了预设阈值,也可以不进行将从服务器获取的数据块缓存在本地磁盘阵列的处理操作。

具体的,将从服务器获取的数据块缓存在本地磁盘阵列中,还可以根据从服务器获取的数据块的数据块信息,确定数据块名称,并基于所确定的数据块名称,将从服务器获取的数据块缓存在本地磁盘阵列中,以便于在后续的下载文件操作时查找相应的数据块。例如,可以将数据块的sha1值和/或md5值作为数据块名称。

同时,在将目标数据块缓存在本地磁盘阵列后,还需要根据目标数据块的数据块信息与目标数据块在本地磁盘阵列中的缓存位置,确定该目标数据块的对应的数据块索引关系,并将所确定的数据块索引关系保存至数据库中,以便于后续下载文件操作时快速获取该目标数据块。

由以上可见,本发明实施例提供的方案中,将从服务器获取的数据块缓存在本地磁盘阵列中,并且将数据块对应的数据块索引关系保存在数据库中,在每次进行文件下载操作时,基于数据块索引关系,分别判断本地磁盘阵列中是否缓存该文件对应的每一数据块,如果是,从本地磁盘阵列中获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域。与现有技术相比,本发明实施例所提供的方案,使用本地磁盘阵列缓存数据块,并使用数据块保存数据块索引关系,既可以扩大本地缓存容量,又可以提高从本地磁盘获取数据块的速度,进一步提升了文件下载性能。由于本地磁盘阵列中缓存有大量数据块,因此,对于目标文件中已经缓存在本地磁盘阵列中的数据块,可以直接读取本地磁盘阵列以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

实际应用中,服务器向客户端发送目标文件的数据块的数据块信息,可以是一次性将目标文件的所有数据块的数据块信息全部反馈给客户端。但是,对于大文件或者超大文件,划分得到的数据块的数量比较多,如果一次性将所有数据块信息都反馈给客户端,可能会造成网络拥塞,导致文件下载速度较慢。因此,为提高文件下载速度,在本发明的另一个具体实施例中,还可以分批将目标文件包含的数据块的数据块信息反馈给客户端。

具体的,参见图5,图5为本发明实施例所提供的文件下载方法的第三种流程示意图。基于图3所提供的实施例,在第一数据块信息为目标文件的部分数据块的数据块信息的情况下,本发明实施例所提供的文件下载方法,还可以包括:

重复执行以下步骤直至获得所述目标文件的全部数据块:

s307,接收服务器根据请求反馈的目标文件的第二数据块信息,其中,第二数据块信息为:目标文件的部分数据块的数据块信息;

s308,根据第二数据块信息,分别判断本地磁盘中是否缓存有第二数据块信息对应的每一数据块,如果是,执行s309,否则,执行s310;

s309,从本地磁盘获取该数据块;

s310,从服务器获取该数据块。

需要说明的是,上述第一数据块信息,是客户端接收到的服务器反馈的目标文件的第一批部分数据块信息。而第二数据块信息,是客户端在接收到第一批部分数据块信息后,再次接收到的目标文件的部分数据块信息,也就是说,第二数据块信息是目标文件对应的除第一数据块信息后剩余的数据块信息。

在服务器分批反馈目标文件的数据块信息时,客户端接收到服务器反馈的每一批数据块信息后,根据该批数据块信息,分别判断本地磁盘中是否缓存有该批数据块信息对应的每一数据块。如果是,就从本地磁盘中获取该数据块,否则,从服务器获取该数据块。按照上述方法,客户端接收服务器反馈的目标文件的所有数据块信息,并获取到目标文件的所有数据块。

需要说明的是,本实施例中,在获取到第一数据块信息对应的数据块后,才接收服务器反馈的第二数据块信息,实际应用中,只要在接收到服务器反馈的第一数据块信息后的任一时刻接收服务器反馈的第二信息,都是合理的,本申请对此不做限定。并且,在获取到每个数据块后,即可将该数据块存储至目标文件在本地磁盘中对应的存储区域。

由以上可见,本发明实施例提供的方案中,在每次进行文件下载操作时,服务器分批反馈目标文件的数据块信息,客户端基于每一批反馈的数据块信息,判断本地磁盘中是否缓存有对应的每一数据块,如果是,从本地磁盘阵列中获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域,直到获取完毕目标文件的全部数据块。与现有技术相比,本发明实施例所提供的方案,分批反馈目标文件的数据块信息,有利于提高文件下载速度,并且由于本地磁盘阵列中缓存有大量数据块,因此,对于目标文件中已经缓存在本地磁盘阵列中的数据块,可以直接读取本地磁盘阵列以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

与上述的文件下载方法相对应,本发明实施例还提供了一种文件下载装置。

与图3所示的方法实施例相对应,图6为本发明实施例提供的文件下载装置的第一种结构示意图,该装置可以包括:请求发送模块601,第一数据块信息接收模块602,第一数据块判断模块603,第一数据块获取模块604,第二数据块获取模块605,数据块存储模块606。

其中,请求发送模块601,用于向服务器发送下载目标文件的请求;

第一数据块信息接收模块602,用于接收所述服务器根据所述请求反馈的所述目标文件的第一数据块信息,其中,所述目标文件包括至少一个数据块,所述第一数据块信息为:所述目标文件所包含数据块的数据块信息;

第一数据块判断模块603,用于根据所述第一数据块信息,分别判断本地磁盘中是否缓存有所述第一数据块信息对应的每一数据块,如果是,执行第一数据块获取模块604,否则,执行第二数据块获取模块605;

所述第一数据块获取模块604,用于从所述本地磁盘获取该数据块;

所述第二数据块获取模块605,用于从所述服务器获取该数据块;

数据块存储模块606,用于将所获取的数据块存储至所述目标文件在本地磁盘中对应的存储区域。

优选的,该文件下载装置还可以包括:第一数据块缓存模块(图中未示出)。

其中,第一数据块缓存模块,用于将从所述服务器获取的数据块缓存在本地磁盘中。

优选的,第一数据块缓存模块,包括:

数据量判断子模块(图中未示出),用于判断所述本地磁盘中缓存的数据量是否达到预设阈值;

第一数据块缓存子模块(图中未示出),用于在判定所述本地磁盘中缓存的数据量没有达到预设阈值的情况下,将从所述服务器获取的数据块缓存在本地磁盘中;

第二数据块缓存子模块(图中未示出),用于在判定所述本地磁盘中缓存的数据量达到预设阈值的情况下,确定本地磁盘中要删除的数据块,并将所述要删除的数据块删除后,将从所述服务器获取的数据块缓存在本地磁盘中。

优选的,第一数据块缓存模块,用于:

根据从所述服务器获取的数据块的数据块信息,确定数据块名称,并基于所确定的数据块名称,将从所述服务器获取的数据块缓存在本地磁盘中。

由以上可见,本发明实施例提供的方案中,在每次进行文件下载操作时,分别判断本地磁盘中是否缓存该文件对应的每一数据块,如果是,从本地磁盘获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域,并且,将从服务器获取的数据块缓存在本地磁盘。与现有技术相比,本发明实施例所提供的方案,由于本地磁盘中缓存有一定数量的数据块,因此,对于目标文件中已经缓存在本地磁盘中的数据块,可以直接读取本地磁盘以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

在本发明的一个具体实施例中,在终端配置了数据库和本地磁盘阵列的情况下,第一数据块判断模块603,具体用于:

根据所述第一数据块信息和数据库中保存的数据块索引关系,分别判断所述数据库中是否保存有所述第一数据块信息对应的每一数据块的缓存位置,其中,所述数据块索引关系为:数据块的数据块信息与该数据块在本地磁盘阵列中的缓存位置之间的对应关系;

如果是,判定本地磁盘阵列中缓存有该数据块;

否则,判定本地磁盘阵列中没有缓存该数据块。

第一数据块获取模块604,具体用于:

根据所述数据库中保存的该数据块在本地磁盘阵列中的缓存位置,从所述本地磁盘阵列获取该数据块。

优选的,该文件下载装置还可以包括:

第二数据块缓存模块(图中未示出),用于将目标数据块缓存在本地磁盘阵列中,其中,所述目标数据块为:从所述服务器获取的数据块;

数据块索引关系确定保存模块(图中未示出),用于确定所述目标数据块的数据块信息与所述目标数据块在本地磁盘阵列中的缓存位置对应的数据块索引关系,并将所确定的数据块索引关系保存至所述数据库中。

由以上可见,本发明实施例提供的方案中,将从服务器获取的数据块缓存在本地磁盘阵列中,并且将数据块对应的数据块索引关系保存在数据库中,在每次进行文件下载操作时,基于数据块索引关系,分别判断本地磁盘阵列中是否缓存该文件对应的每一数据块,如果是,从本地磁盘阵列中获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域。与现有技术相比,本发明实施例所提供的方案,使用本地磁盘阵列缓存数据块,并使用数据块保存数据块索引关系,既可以扩大本地缓存容量,又可以提高从本地磁盘获取数据块的速度,进一步提升了文件下载性能。由于本地磁盘阵列中缓存有大量数据块,因此,对于目标文件中已经缓存在本地磁盘阵列中的数据块,可以直接读取本地磁盘阵列以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

与图5所示的方法实施例相对应,图7为本发明实施例提供的文件下载装置的第二种结构示意图,本实施例中第一数据块信息为目标文件的部分数据块的数据块信息,与图6所示实施例相比,该文件下载装置还包括:第二数据块信息接收模块607,第二数据块判断模块608,第三数据块获取模块609,第四数据块获取模块610。

其中,第二数据块信息接收模块607,用于接收所述服务器根据所述请求反馈的所述目标文件的第二数据块信息,其中,所述第二数据块信息为:所述目标文件的部分数据块的数据块信息;

第二数据块判断模块608,用于根据所述第二数据块信息,分别判断本地磁盘中是否缓存有所述第二数据块信息对应的每一数据块,如果是,执行第一数据块获取模块609,否则,执行第二数据块获取模块610;

所述第一数据块获取模块609,用于从所述本地磁盘获取该数据块;

所述第二数据块获取模块610,用于从所述服务器获取该数据块。

由以上可见,本发明实施例提供的方案中,在每次进行文件下载操作时,服务器分批反馈目标文件的数据块信息,客户端基于每一批反馈的数据块信息,判断本地磁盘中是否缓存有对应的每一数据块,如果是,从本地磁盘阵列中获取该数据块,否则,从服务器获取该数据块,将所获得的所有数据块存储至目标文件在本地对应的存储区域,直到获取完毕目标文件的全部数据块。与现有技术相比,本发明实施例所提供的方案,分批反馈目标文件的数据块信息,有利于提高文件下载速度,并且由于本地磁盘阵列中缓存有大量数据块,因此,对于目标文件中已经缓存在本地磁盘阵列中的数据块,可以直接读取本地磁盘阵列以获取对应的数据块,减少了从服务器中下载的数据块的个数,甚至不需要从服务器中下载数据块,文件下载速度最快能达到磁盘访问的速度,从而减少了通过网络下载文件的时间,提高了文件的下载性能。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom/ram、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1