一种数据分页方法及装置转让专利

申请号 : CN201510456415.4

文献号 : CN105183764B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘永赞孟杰陈一宁

申请人 : 广州神马移动信息科技有限公司

摘要 :

本发明公开的数据分页方法,包括获取待显示网页的页码X;计算所述待显示网页的资源数据页的总页数Y;按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;将所述目标数据页对应的目标数据发送到客户端。相应的,本发明还公开了一种数据分页装置。与现有技术相比,本发明的技术方案,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。

权利要求 :

1.一种数据分页方法,其特征在于,包括:

获取待显示网页的页码X;

计算所述待显示网页的资源数据页的总页数Y;

按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;其中,所述预设对应关系是指逆向映射规则,所述逆向映射规则是指所述待显示网页的页码与所述目标数据页的页码的对应关系为首尾对应;

将所述目标数据页对应的目标数据发送到客户端。

2.如权利要求1所述的方法,其特征在于,所述按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码,具体包括:判断第Y页数据页是否满页;

如果所述第Y页数据页满页,则所述待显示网页的页码X对应的目标数据页的页码为Z,Z=Y-X+1;

如果所述第Y页数据页不满页,则所述待显示网页的页码X对应的目标数据页的页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X;整合第Z页和第Z’页的数据得到目标数据;将所述目标数据发送到所述客户端。

3.如权利要求2所述的方法,其特征在于,当所述待显示网页的页码X对应的目标数据页的页码为Z时,在所述将所述目标数据页对应的目标数据发送到客户端之前,还包括:判断缓存中是否存储有所述目标数据页的页码Z;

如果所述缓存中存储有所述目标数据页的页码Z,根据所述页码Z在所述缓存中查找所述目标数据页;读取所述目标数据页对应的目标数据;

如果所述缓存中未存储所述目标数据页的页码Z,从数据库中读取所述目标数据页对应的目标数据。

4.如权利要求3所述的方法,其特征在于,所述从数据库中读取所述目标数据页对应的目标数据包括:根据所述页码Z和数据页满页时的数据条数N确定所述目标数据页的第一条数据;

在所述数据库中查找所述第一条数据;

以所述第一条数据为起始数据按照预设顺序读取N条数据;

将所读取的N条数据确定为所述目标数据。

5.如权利要求2所述的方法,其特征在于,所述整合第Z页和第Z’页的数据得到目标数据包括:读取所述第Z页的M条数据作为所述目标数据的第一部分数据;

利用数据页满页时的数据条数N减去M得到所述目标数据的差量A;其中,M小于N;

以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据;

将所述第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。

6.如权利要求5所述的方法,其特征在于,读取所述第Z页的M条数据作为所述目标数据的第一部分数据包括:当Z等于Y时,顺次读取所述M条数据作为所述目标数据的第一部分数据;

当Z不等于Y时,以第(A+1)条数据为起始数据,顺次读取所述第Z页的剩余数据作为所述目标数据的第一部分数据。

7.一种数据分页装置,其特征在于,包括:

获取模块,用于获取待显示网页的页码X;

计算模块,用于计算所述待显示网页的资源数据页的总页数Y;

确定模块,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;其中,所述预设对应关系是指逆向映射规则,所述逆向映射规则是指所述待显示网页的页码与所述目标数据页的页码的对应关系为首尾对应;

发送模块,用于将所述目标数据页对应的目标数据发送到客户端。

8.如权利要求7所述的装置,其特征在于,所述确定模块具体包括:判断单元、确定单元和整合单元,其中,所述判断单元,用于判断第Y页数据页是否满页;

当第Y页数据页满页时,所述确定单元,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码为Z,其中,Z=Y-X+1;

当第Y页数据页不满页时,所述确定单元,还用于确定与所述待显示网页的页码X对应的目标数据页的页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X;

所述整合单元,用于整合第Z页和第Z’页的数据得到目标数据;

所述发送模块,还用于将所述整合单元整合得到的目标数据发送到所述客户端。

9.如权利要求7或8所述的装置,其特征在于,所述确定模块还包括查找单元和读取单元,其中,所述判断单元,还用于判断缓存中是否存储有所述目标数据页的页码Z;

所述查找单元,用于在所述缓存中存储有所述目标数据页的页码Z时,根据所述页码Z在所述缓存中查找所述目标数据页;

所述读取单元,用于读取所述查找单元查找到的目标数据页对应的目标数据;

所述读取单元,还用于在所述缓存中未存储所述目标数据页的页码Z时,从数据库中读取所述目标数据页对应的目标数据。

10.如权利要求9所述的装置,其特征在于,所述读取单元包括第一读取子单元,其中,所述确定单元,还用于根据所述页码Z和数据页满页时的数据条数N确定所述目标数据页的第一条数据;

所述查找单元,还用于在所述数据库中查找所述第一条数据;

所述第一读取子单元,用于以所述第一条数据为起始数据按照预设顺序读取N条数据;

所述确定单元,还用于将所述第一读取子单元所读取的N条数据确定为所述目标数据。

11.如权利要求8所述的装置,其特征在于,所述整合单元包括第二读取子单元、差量计算子单元和数据拼接子单元,其中,所述第二读取子单元,用于读取所述第Z页的M条数据作为所述目标数据的第一部分数据;

所述差量计算子单元,用于利用数据页满页时的数据条数N减去M得到所述目标数据的差量A;其中,M小于N;

所述第二读取子单元,还用于以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据;

所述数据拼接子单元,用于将所述第二读取子单元所读取的第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。

12.如权利要求11所述的装置,其特征在于,所述第二读取子单元,具体用于当Z等于Y时,顺次读取所述M条数据作为所述目标数据的第一部分数据;当Z不等于Y时,以第(A+1)条数据为起始数据,顺次读取所述第Z页的剩余数据作为所述目标数据的第一部分数据。

说明书 :

一种数据分页方法及装置

技术领域

[0001] 本发明涉及互联网技术领域,更具体而言,涉及一种数据分页方法及装置。

背景技术

[0002] 随着信息多元化及大数据技术的发展,网站需要展示的数据越来越多,然而,受到终端屏幕尺寸的限制,在网站的一个网页中无法将数据全部展示,因此,通常先将数据分页形成多个数据页,通过将每个数据页中的数据在对应的网页进行展示将数据全部展示。
[0003] 具体的,预先设定数据页和网页的映射关系,当服务器接收到客户端发送的网页展示请求时,首先根据网页的页码查询缓存中是否存储有与网页对应的目标数据页,若缓存中存储有该数据页,读取数据页的数据并发送到客户端;若缓存中未存储该数据页,那么服务器从数据库中读取网站对应的数据,对所读取的数据进行分页并写入缓存中。对所读取的数据进行分页具体包括,获取数据总条数,并根据终端的屏幕信息计算每页网页所能够展示的数据条数,将数据以每页所显示的数据条数为单位进行分页,并将分页后的每个数据页存储在缓存中。
[0004] 其中,现有技术中通常将网页与数据页的映射关系设置为,按照页码从小到大的顺序一一对应,即第一页网页对应展示第一页数据页的数据,第二页网页对应展示第二页数据页的数据,依此类推。而由于网站在展示数据时,通常按照更新时间由新到旧的顺序顺次展示,因此,服务器在进行数据分页时,按照更新时间由新到旧的顺序顺次向下排列,即按照数据页从小到大,数据的更新时间逐渐由新到旧。所以,当数据分页完成之后,如果有新数据产生,为了将新数据分页到数据页第一页的第一条,需要将所有数据按照更新时间重新排序,从而会导致所有数据页全部失效,造成缓存雪崩,进一步的,会降低每页数据的缓存命中率,从而会导致缓存性能和数据加载效率的降低。

发明内容

[0005] 有鉴于此,本发明实施例提供了一种数据分页方法及装置,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0006] 第一方面,本发明实施例提供了一种数据分页方法,包括获取待显示网页的页码X;计算所述待显示网页的资源数据页的总页数Y;按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;将所述目标数据页对应的目标数据发送到客户端。
[0007] 在第一方面的第一种可能的实现方式中,所述按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码,具体包括:判断第Y页数据页是否满页;如果所述第Y页数据页满页,则所述待显示网页的页码X对应的目标数据页的页码为Z,Z=Y-X+1;如果所述第Y页数据页不满页,则所述待显示网页的页码X对应的目标数据页的页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X;整合第Z页和第Z’页的数据得到目标数据;将所述目标数据发送到所述客户端。
[0008] 结合上述第一方面,在第二种可能的实现方式中,当所述待显示网页的页码X对应的目标数据页的页码为Z时,在所述将所述目标数据页对应的目标数据发送到客户端之前,还包括:判断缓存中是否存储有所述目标数据页的页码Z;如果所述缓存中存储有所述目标数据页的页码Z,根据所述页码Z在所述缓存中查找所述目标数据页;读取所述目标数据页对应的目标数据;如果所述缓存中未存储所述目标数据页的页码Z,从数据库中读取所述目标数据页对应的目标数据。
[0009] 结合上述第一方面,在第三种可能的实现方式中,所述从数据库中读取所述目标数据页对应的目标数据包括:根据所述页码Z和数据页满页时的数据条数N确定所述目标数据页的第一条数据;在所述数据库中查找所述第一条数据;以所述第一条数据为起始数据按照预设顺序读取N条数据;将所读取的N条数据确定为所述目标数据。
[0010] 结合上述第一方面,在第四种可能的实现方式中,所述整合第Z页和第Z’页的数据得到目标数据包括:读取所述第Z页的M条数据作为所述目标数据的第一部分数据;利用数据页满页时的数据条数N减去M得到所述目标数据的差量A;其中,M小于N;以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据;将所述第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。
[0011] 结合上述第一方面,在第五种可能的实现方式中,读取所述第Z页的M条数据作为所述目标数据的第一部分数据包括:当Z等于Y时,顺次读取所述M条数据作为所述目标数据的第一部分数据;当Z不等于Y时,以第(A+1)条数据为起始数据,顺次读取所述第Z页的剩余数据作为所述目标数据的第一部分数据。
[0012] 第二方面,本发明实施例还提供了一种数据分页装置,包括:获取模块,用于获取待显示网页的页码X;计算模块,用于计算所述待显示网页的资源数据页的总页数Y;确定模块,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;发送模块,用于将所述目标数据页对应的目标数据发送到客户端。
[0013] 在第二方面的第一种可能的实现方式中,所述确定模块具体包括:判断单元、确定单元和整合单元,其中,所述判断单元,用于判断第Y页数据页是否满页;当第Y页数据页满页时,所述确定单元,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码为Z,其中,Z=Y-X+1;当第Y页数据页不满页时,所述确定单元,还用于确定与所述待显示网页的页码X对应的目标数据页的页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X;所述整合单元,用于整合第Z页和第Z’页的数据得到目标数据;所述发送模块,还用于将所述整合单元整合得到的目标数据发送到所述客户端。
[0014] 结合上述第二方面,在第二种可能的实现方式中,所述确定模块还包括查找单元和读取单元,其中,所述判断单元,还用于判断缓存中是否存储有所述目标数据页的页码Z;所述查找单元,用于在所述缓存中存储有所述目标数据页的页码Z时,根据所述页码Z在所述缓存中查找所述目标数据页;所述读取单元,用于读取所述查找单元查找到的目标数据页对应的目标数据;所述读取单元,还用于在所述缓存中未存储所述目标数据页的页码Z时,从数据库中读取所述目标数据页对应的目标数据。
[0015] 结合上述第二方面,在第三种可能的实现方式中,所述读取单元包括第一读取子单元,其中,所述确定单元,还用于根据所述页码Z和数据页满页时的数据条数N确定所述目标数据页的第一条数据;所述查找单元,还用于在所述数据库中查找所述第一条数据;所述第一读取子单元,用于以所述第一条数据为起始数据按照预设顺序读取N条数据;所述确定单元,还用于将所述第一读取子单元所读取的N条数据确定为所述目标数据。
[0016] 结合上述第二方面,在第四种可能的实现方式中,所述整合单元包括第二读取子单元、差量计算子单元和数据拼接子单元,其中,所述第二读取子单元,用于读取所述第Z页的M条数据作为所述目标数据的第一部分数据;所述差量计算子单元,用于利用数据页满页时的数据条数N减去M得到所述目标数据的差量A;其中,M小于N;所述第二读取子单元,还用于以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据;所述数据拼接子单元,用于将所述第二读取子单元所读取的第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。
[0017] 结合上述第二方面,在第五种可能的实现方式中,所述第二读取子单元,具体用于当Z等于Y时,顺次读取所述M条数据作为所述目标数据的第一部分数据;当Z不等于Y时,以第(A+1)条数据为起始数据,顺次读取所述第Z页的剩余数据作为所述目标数据的第一部分数据。
[0018] 由以上技术方案可知,本发明实施例所提供的数据分页方法及装置,在获取待显示网页的页码X后,首先计算所述待显示网页的资源数据页的总页数Y,并按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码,然后,将所述目标数据页对应的目标数据发送到客户端。由此可见,按照本发明的技术方案,待显示网页的页码和数据页页码的映射关系预设为,网页的第一页对应数据页的尾页,网页的第二页对应数据页的倒数第二页,依此类推。所以,在进行数据分页时,应当将更新时间距当前时间最长的数据分页到数据页的第一页,并依次向后,从而将更新时间距当前时间最短的数据分页到最后一页。所以,当分页完成后,即使有新数据产生,仅更新数据页的最后一页即可,从而不会导致其他数据页失效,与现有技术相比,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。

附图说明

[0019] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本发明的主旨。
[0020] 图1为本发明实施例提供的数据分页方法的方法流程图;
[0021] 图2为本发明实施例提供的数据分页方法的第二种实施方式的方法流程图;
[0022] 图3为本发明实施例提供的数据分页方法的第三种实施例方式的方法流程图;
[0023] 图4为本发明实施例提供的数据分页装置的结构示意图;
[0024] 图5为本发明实施例提供的另一种数据分页装置的结构示意图。

具体实施方式

[0025] 通常,对数据如何分页取决于网页与数据页的映射关系,由于传统映射关系为按照页码由小到大的顺序一一对应,所以,传统的数据分页方法存在上述技术问题。本发明实施例为了解决上述技术问题,通过改变网页与数据页的映射关系,改变数据分页方法,从而解决上述技术问题。
[0026] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027] 请参见图1,图1为本发明实施例提供的数据分页方法的方法流程图。本实施例从整体上介绍本发明的实现方法,所述方法包括以下步骤:
[0028] 步骤S101:获取待显示网页的页码X。
[0029] 其中,当用户浏览网页时,客户端根据用户的点击操作生成数据展示请求,该请求中包括待显示网页的页码等信息。由于网页所展示的为存储在服务器端的数据,因此,每页网页均与服务器端的数据页存在映射关系,而网页与数据页的映射关系通过页码建立,因此,服务器在接收到客户端发送的数据展示请求之后,可以从该请求中获取待显示网页的页码,以查找与该待显示网页相互映射的数据页。
[0030] 例如,用户访问网易首页时,客户端根据用户的访问信息生成数据展示请求,并将该请求发送到服务器端。该请求中包括网页的页码1,当服务器接收到该请求之后,获取待显示网页的页码1,并根据预设的映射关系,确定网易首页对应的目标数据页。
[0031] 步骤S102:计算所述待显示网页的资源数据页的总页数Y。
[0032] 其中,在本发明实施例的技术方案中,待显示网页的页码和数据页页码遵循预设的逆向映射规则,所述逆向映射规则是指待显示网页的页码与数据页页码的对应关系为首尾对应,即网页的首页对应数据页的尾页,网页的第二页对应数据页的倒数第二页,并以此类推。因此,在确定网页对应的目标数据页之前,首先要确定待显示网页的资源数据页的总页数Y。然而,由于网页对应的资源数据不断更新,因此,数据总量在不断变化,导致资源数据页的总页数Y也不断变化。而且,即使资源数据更新较慢,但是不同的显示终端屏幕尺寸不同,每页网页所能够显示数据量也不相同,从而也会导致资源数据页的总页数Y不同。因此,服务器在根据待显示网页的页码X确定对应的目标数据页之前,首先需要根据当前资源数据总量计算得到资源数据页的总页数Y。
[0033] 例如,当待显示网页的页码X是2时,其对应的目标数据页页码Z应当包括倒数第二页的页码,假设数据总量为50条,每页共包括10条数据,那么数据尾页页码为5,与网页对应的目标数据页为第4页;假如上次访问时数据总量为50条,本次访问数据总量增长为80条,资源数据页的总页数Y等于8,此时网页对应的目标数据页的页码等于7。
[0034] 当然,计算待显示网页的资源数据页的总页数Y的方法,为本领域技术人员所熟知的技术手段,本发明实施例此处不再赘述。
[0035] 本实施例在获取到待显示网页的页码X后,首先计算资源数据页的总页数Y,能够为确定待显示网页的页码X对应的目标数据页的页码提供精确的数据依据,从而为后面的操作做准备。
[0036] 步骤S103:按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码。
[0037] 其中,由上述描述可知,待显示网页的页码和数据页页码遵循预设的逆向映射规则,因此,在获取待显示网页的页码X后,应当以数据页第Y页为起始页,降序查找与待显示网页的页码X对应的目标数据页的页码,但由于资源数据总量是随机自然数,导致数据页的第Y页经常存在不满页的情况,因此本步骤的按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码,具体包括判断第Y页数据页是否满页,具体的,读取第Y页数据页的数据条数M,并对比M是否等于满页数据条数N。需要说明的是,本实施例中,M和N均为自然数,且1≤M≤N。
[0038] 如果M等于N,说明第Y页数据页满页,则将第Z页数据页确定为待显示网页的目标数据页,Z=Y-X+1;例如,待显示网页的页码X为5,数据页总页数Y为25,则应当以数据页的第25页为起始页码降序查找目标数据页,可知,目标数据页包括第21页数据页。
[0039] 如果M小于N,说明第Y页数据页不满页,将第Z页和第Z’页数据页确定为待显示网页的目标数据页,其中,Z=Y-X+1,Z’=Y-X。因此,当待显示网页的页码X为1时,为了保证待显示网页所展示的数据满页,本发明实施例的技术方案,读取第Y页和第(Y-1)页数据页的数据,并将两数据页的数据整合形成一页满页数据,将整合后的满页数据确定为目标数据。由于第一页网页的目标数据中包含部分第(Y-1)页数据页的数据,导致第(Y-1)数据页的数据不满页,因此,第二页网页对应的目标数据包括第(Y-1)页和第(Y-2)页数据页的数据,依此类推,其他待显示网页的目标数据内容均包括两页数据页的内容。例如,假设资源数据总量为36条,如果满页显示时的数据为9条,那么,资源数据页的总页数为4页,每页中均有9条数据,此时,第一页网页对应读取第四页数据页的数据即可,因此,将第四页数据页确定为第一页网页的目标数据页。如果满页显示时的数据为10条,数据分页为3页,其中,第一页、第二页和第三页有10条数据,第四页仅有6条数据,当确定第一页网页对应的目标数据时,应当读取第四页和第三页数据页的数据,因此,将第四页和第三页数据页确定为第一页网页对应的目标数据页。
[0040] 步骤S104:将所述目标数据页对应的目标数据发送到客户端。
[0041] 其中,当服务器根据待显示网页的页码X确定与该待显示网页相对应的目标数据页之后,可以在缓存中查找目标数据页的页码,如果在缓存中能够查找到目标数据页的页码,可以从缓存中读取相应数据;如果在缓存中无法查找到目标数据页的页码,需要从数据库中读取相应数据。
[0042] 综合上述,本发明实施例所提供的数据分页方法,由于本发明技术方案将待显示网页的页码和数据页页码的映射关系预设为逆向映射,即,网页的第一页对应数据页的尾页,网页的第二页对应数据页的倒数第二页,依此类推,所以,在进行数据分页时,应当将更新时间距当前时间最长的数据分页到数据页的第一页,并依次向后,从而将更新时间距当前时间最短的数据分页到最后一页。所以,当分页完成后,即使有新数据产生,仅更新数据页的最后一页即可,从而不会导致其他数据页失效,与现有技术相比,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0043] 上述实施例对本发明技术方案进行了概括性描述,为了使本领域技术人员更加清楚的了解本发明实施例的技术方案,下面分别对第Y页数据页满页和不满页情况下,数据的分页操作进行详细描述。
[0044] 请参见图2,图2为本发明实施例提供的数据分页方法的第二种实施方式的方法流程图,本实施例是对第Y页数据页满页的情况下,数据分页操作的详细描述。由于本实施例是在上述实施例基础上的展开,因此,本实施例中与上述实施例相同的步骤,详见上述实施例的描述,本实施例不再赘述。
[0045] 本实施例所述的方法包括下述步骤:
[0046] 步骤S201:获取待显示网页的页码X。
[0047] 步骤S202:计算所述待显示网页的资源数据页的总页数Y。
[0048] 其中,假设本实施例中所有数据页均为满页,即所有数据页均包含有N条数据。
[0049] 步骤S203:按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码。
[0050] 根据上述实施例的描述可知,当第Y页数据页满页时,待显示网页对应的目标数据页的页码为Z,其中,Z=Y-X+1。
[0051] 步骤S204:判断缓存中是否存储有所述目标数据页的页码Z。如果缓存中存储有页码Z,执行步骤S205;如果缓存中未存储页码Z,执行步骤S207。
[0052] 众所周知,为了提高读取数据的速度,服务器通常将数据先写入缓存,当需要读取时可以从缓存中读取,从而避免访问数据库,提高数据读取的效率。但是为了降低缓存的负荷,缓存中的数据在存储一定时间后会被删除,因此,在读取数据前需要判断缓存中是否存储有目标数据。
[0053] 需要说明的是,在数据页的数据写入缓存的同时,还将该数据页的页码及数据条数对应存储到缓存,因此,在确定目标数据页的页码Z之后,服务器首先可以判断缓存中是否存储有页码Z,如果缓存中存储有页码Z,说明目标数据已经写入缓存,服务器可以从缓存中读取目标数据;如果缓存中未存储页码Z,说明目标数据未写入缓存或者已经被删除,服务器需要从数据库中读取目标数据。
[0054] 步骤S205:根据所述页码Z在所述缓存中查找所述目标数据页。
[0055] 其中,服务器在将目标数据写入缓存之前,首先将所有资源数据进行分页,并为属于同一数据页的数据设置相应的页码,然后,将资源数据以数据页为单位写入缓存,因此,当服务器从缓存中读取目标数据时,可以先通过页码在缓存中查找目标数据页。
[0056] 步骤S206:读取所述目标数据页对应的目标数据。
[0057] 根据上述描述,将目标数据页的全部数据作为目标数据进行读取。
[0058] 步骤S207:从数据库中读取所述目标数据页对应的目标数据。
[0059] 其中,数据库中存储有多个网站的资源数据,服务器可以从客户端发送的数据展示请求中获取待显示网页的网页标识,然后,根据网页标识确定资源数据。
[0060] 由于资源数据在数据库中可以按照更新时间进行存储,而资源数据总数和满页数据条数N已知,且本发明实施例中,随着数据页页码的增大,数据页中数据的更新时间距离当前时间的时间差逐渐减小,因此,在确定目标数据页的页码Z之后,可以计算得到页码Z对应的目标数据中第一条数据的更新时间,根据第一条数据的更新时间在数据库中查找第一条数据,然后,按照更新时间顺次读取N条数据作为页码Z对应的目标数据。
[0061] 需要说明的是,待显示网页在展示数据时,按照数据更新时间距当前时间由短到长的次序进行,因此,服务器可以从更新时间距当前时间最长的数据开始读取,每读取N条数据,首先,按照更新时间距当前时间由短到长将数据重新排序,然后作为相应数据页的数据写入缓存或者发送到客户端。因此,本实施例中,页码Z的第一条数据可以为该页中更新时间最新的数据,当确定第一条数据后,可以按照更新时间距当前时间由短到长顺次读取N条数据。
[0062] 步骤S208:将所述目标数据页对应的目标数据发送到客户端。
[0063] 由上述实施例的描述可知,本实施例的技术方案,在数据分页完成后若有新数据产生,将新数据分页到数据页的最后一页,对其他数据页不产生影响,从而能够避免缓存雪崩现象的发生,能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0064] 上述实施例对第Y页数据页为满页时的分页操作进行了详述,而本发明实施例的技术方案还包括第Y页数据页不满页的情况,下述实施例将对第Y页数据页不满页时的分页操作进行详述。
[0065] 需要指出的是,本实施例是对上述实施例的补充,因此,本实施例中与上述实施例相同的步骤,详见上述实施例的描述,本实施例不再赘述。
[0066] 请参见图3,图3为本发明实施例提供的数据分页方法的第三种实施例方式的方法流程图,所述方法包括下述步骤:
[0067] 步骤S301:获取待显示网页的页码X。
[0068] 步骤S302:计算所述待显示网页的资源数据页的总页数Y。
[0069] 步骤S303:确定与所述待显示网页的页码X对应的目标数据页的页码Z和Z’。
[0070] 其中,在本实施例中,第Y页数据页的数据条数M小于满页数据条数N,假设N为10,M为6。当X等于1时,只读取第Y页的6条数据,网页无法满页显示,因此,服务器需要将第(Y-1)页数据页的数据与该6条数据整合,形成10条数据,依此类推,在本实施例中,当第Y页数据页不满页时,待显示网页对应的目标数据页页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X。
[0071] 步骤S304:读取所述第Z页的M条数据作为所述目标数据的第一部分数据。
[0072] 其中,由上述实施例可知,数据页的页码越大,该数据页对应的数据越新,因此,当待显示网页对应的目标数据页页码为Z和Z’时,先读取第Z页的M条数据作为目标数据页的第一部分数据,再从第Z’页中读取目标数据的第二部分数据。
[0073] 需要说明的是,读取第Z页数据的方法详见上述实施例的描述,本实施例不赘述。
[0074] 步骤S305:利用数据页满页时的数据条数N减去M得到所述目标数据的差量A。
[0075] 其中,虽然待显示网页对应的目标数据页为两页,但是待显示网页满页显示的数据条数为N条,因此,仅需要将第Z’页的部分数据和第Z页的M条数据拼接形成N条目标数据即可,所以,当读取了第Z页数据页的M条数据后,计算目标数据的差量A,以便于确定应当从第Z’页中读取的数据条数。
[0076] 步骤S306:以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据。
[0077] 其中,根据上述实施例的描述可知,数据页中的数据按照更新时间距当前时间由短到长逐次排列,在展示时,按照数据更新程度进行,因此,在按照差量A从第Z’页中读取的数据时,以第Z’页的第一条数据为起始数据,顺次读取A条数据作为目标数据的第二部分数据。
[0078] 需要说明的是,在读取第二部分数据时,首先判断缓存中是否存储有页码Z’,当缓存中存储有页码Z’时,从缓存中的读取第二部分数据;当缓存中未存储页码Z’时,从数据库中读取第二部分数据。其中,从数据库中读取第二部分数据的方法和步骤与上述方法类似,本发明实施例此处不再赘述。
[0079] 步骤S307:将所述第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。
[0080] 其中,服务器在读取第一部分数据和第二部分数据时,均按照更新时间顺次读取,为了保证目标数据按照更新时间由新到旧顺次排序,当读取完成后,将第二部分数据拼接到第一部分数据之后形成目标数据。
[0081] 例如,假设N为10,M为6,当X为1时,首先读取第Y页的全部6条数据作为目标数据的第一部分数据,根据(N-M)计算得到差量A为4,服务器再从第(Y-1)页数据页的第一条数据开始顺次读取4条数据,然后,将该4条数据作为第二部分数据拼接到第一部分6条数据的后面,形成第一页网页的目标数据;当X不为1时,由于第Z页中的前4条数据被拼接到第(Z+1)页中,因此,第Z页中只有6条剩余数据,服务器读取该6条剩余数据作为第一部分数据,然后,再从第Z’页中读取4条数据作为第二部分数据拼接到6条剩余数据后面,形成第X页网页的目标数据。此外,当X等于Y时,Z等于1,Z’等于0,即,不存在第Z’页,服务器将第一页数据页剩余的6条数据发送到客户端即可。
[0082] 此外,由于资源数据一直处于更新状态,导致第Y页的数据条数不稳定,存在在服务器确定网页对应的目标数据页时,增加数据条数的情况,而第Y页数据条数的变动会造成目标数据差量A的计算错误,例如,服务器接收数据展示请求时第Y页的数据为6,读取数据时第Y页的数据条数为7,此时,目标数据的差量由4变为3。因此,为了能够准确的确定目标数据的差量A,在服务器接收到第一页网页的数据展示请求后,首先获取第Y页的数据,然后再获取第(Y-1)页的数据。
[0083] 步骤S308:将所述目标数据页对应的目标数据发送到客户端。
[0084] 根据上述描述,将拼接后得到的目标数据发送到客户端。
[0085] 由此可见,本发明实施例所提供的数据分页方法,在获取待显示网页的页码X后,首先计算所述待显示网页的资源数据页的总页数Y,并按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码Z,其中,Z=Y-X+1,然后,将所述目标数据页对应的目标数据发送到客户端。由此可见,按照本发明的技术方案,待显示网页的页码和数据页页码的映射关系预设为,网页的第一页对应数据页的尾页,网页的第二页对应数据页的倒数第二页,依此类推。所以,在进行数据分页时,应当将更新时间距当前时间最长的数据分页到数据页的第一页,并依次向后,从而将更新时间距当前时间最短的数据分页到最后一页。所以,当分页完成后,即使有新数据产生,仅更新数据页的最后一页即可,从而不会导致其他数据页失效,与现有技术相比,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0086] 与上述实现方法相对应的,本发明实施例还提供了一种数据分页装置,请参见图4,图4为本发明实施例提供的数据分页装置的结构示意图,所述装置包括:获取模块11、计算模块12、确定模块13和发送模块14,其中,获取模块11,用于获取待显示网页的页码X;计算模块12,用于计算所述待显示网页的资源数据页的总页数Y;确定模块13,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码;发送模块14,用于将所述目标数据页对应的目标数据发送到客户端。
[0087] 所述装置中各个模块的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。
[0088] 本实施例所述的装置,与现有技术相比,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0089] 此外,在上述实施例的基础上,本发明还提供了另一种数据分页装置,如图5所示,图5为本发明实施例提供的另一种数据分页装置的结构示意图,所述装置包括:获取模块21、计算模块22、判断单元23、确定单元24、查找单元25、读取单元26、整合单元27和发送模块28,其中,所述获取模块21、所述计算模块22和所述发送模块28的功能和作用与上述实施例相似,本发明实施例此处不再赘述。
[0090] 在本实施例中,判断单元23,用于判断第Y页数据页是否满页;当第Y页数据页满页时,所述确定单元24,用于按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码为Z,其中,Z=Y-X+1;当第Y页数据页不满页时,所述确定单元24,还用于确定与所述待显示网页的页码X对应的目标数据页的页码为Z和Z’,其中,Z=Y-X+1,Z’=Y-X;所述整合单元27,用于整合第Z页和第Z’页的数据得到目标数据;所述发送模块28,在本实施例中还用于将所述整合单元27整合得到的目标数据发送到所述客户端。
[0091] 在上述实施例的基础上,在另外一个实施例中,所述判断单元23,还用于判断缓存中是否存储有所述目标数据页的页码Z;所述查找单元25,用于在所述缓存中存储有所述目标数据页的页码Z时,根据所述页码Z在所述缓存中查找所述目标数据页;所述读取单元26,用于读取所述查找单元25查找到的目标数据页对应的目标数据;在另外一个实施例中,所述读取单元26,还用于在所述缓存中未存储所述目标数据页的页码Z时,从数据库中读取所述目标数据页对应的目标数据。
[0092] 基于上述实施例的描述,所述读取单元26具体包括第一读取子单元,其中,在本实施例中,所述确定单元,还用于根据所述页码Z和数据页满页时的数据条数N确定所述目标数据页的第一条数据;所述查找单元,还用于在所述数据库中查找所述第一条数据;所述第一读取子单元,用于以所述第一条数据为起始数据按照预设顺序读取N条数据;所述确定单元,还用于将所述第一读取子单元所读取的N条数据确定为所述目标数据。
[0093] 所述整合单元27包括第二读取子单元、差量计算子单元和数据拼接子单元,其中,所述第二读取子单元,用于读取所述第Z页的M条数据作为所述目标数据的第一部分数据;所述差量计算子单元,用于利用数据页满页时的数据条数N减去M得到所述目标数据的差量A;其中,M小于N;所述第二读取子单元,还用于以所述第Z’页的第一条数据为起始数据,顺次读取A条数据作为所述目标数据的第二部分数据;所述数据拼接子单元,用于将所述第二读取子单元所读取的第二部分数据顺次写到所述第一部分数据之后形成所述目标数据。其中,所述第二读取子单元,具体用于当Z等于Y时,顺次读取所述M条数据作为所述目标数据的第一部分数据;当Z不等于Y时,以第(A+1)条数据为起始数据,顺次读取所述第Z页的剩余数据作为所述目标数据的第一部分数据。
[0094] 所述装置中各个模块和单元的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。
[0095] 综合上述,本发明实施例所提供的数据分页方法及装置,在获取待显示网页的页码X后,首先计算所述待显示网页的资源数据页的总页数Y,并按照预设对应关系确定与所述待显示网页的页码X对应的目标数据页的页码Z,其中,Z=Y-X+1,然后,将所述目标数据页对应的目标数据发送到客户端。由此可见,按照本发明的技术方案,待显示网页的页码和数据页页码的映射关系预设为,网页的第一页对应数据页的尾页,网页的第二页对应数据页的倒数第二页,依此类推。所以,在进行数据分页时,应当将更新时间距当前时间最长的数据分页到数据页的第一页,并依次向后,从而将更新时间距当前时间最短的数据分页到最后一页。所以,当分页完成后,即使有新数据产生,仅更新数据页的最后一页即可,从而不会导致其他数据页失效,与现有技术相比,能够避免缓存雪崩现象的发生,从而能够提高每页数据的缓存命中率,进而提高缓存的性能和数据加载效率。
[0096] 以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。