一种缓存管理方法
技术领域
本发明涉及web缓存技术,特别是指一种缓存管理方法。
背景技术
web缓存技术是在缓存中存放被访问过的web文档的副本的技术,当需要再次访问该web文档时,可以直接从缓存中取出该文档返回给用户。
下面结合图1详细介绍现有的web缓存管理的通常的处理流程。
步骤101:用户请求一个web文档O。
步骤102:判断用户请求的web文档O是否在缓存中,如果是,则执行步骤103;否则,执行步骤105。
步骤103:比较请求的web文档O与缓存中的web文档O的大小和最后刷新时间,判断该缓存中的web文档O是否已过期,如果已过期,则执行步骤104;否则,执行步骤108。
步骤104:删除缓存中该过期的web文档O。
步骤105:从远程web服务器中获取被请求的web文档O,并返回给用户。
步骤106:比较该web文档O的大小与缓存中剩余空间的大小,判断缓存中是否有足够的空间存放该web文档O,如果没有,则执行步骤107;如果有,则执行步骤109。
步骤107:从缓存中依次删除权重最低的对象,直到缓存中有足够的剩余空间来存放该web文档O,然后执行步骤109。
步骤108:从缓存中获取该web文档O,并返回给用户。
步骤109:更新web文档O的相关属性和权重,并将web文档O存放到缓存中,结束本流程。
以上现有的web缓存管理方法中,最主要的缺点在于使用单队列管理web缓存,单队列web缓存管理中只存在一个队列,因此缓存管理的时间复杂度较高。
对于上述web缓存管理流程中,影响web缓存使用效率的问题为步骤107中的删除权重最低的对象以存放当前被请求的web文档的替换策略,以及步骤109中的存放策略。其中,缓存替换是指当缓存已满时用新的web文档替换旧的web文档的过程。对于所述替换策略和存放策略,现有技术中有很多处理方法,都存在一些缺点,概括如下:现有的web缓存替换中,没有考虑利用web文档的最近访问历史来评估该web文档可能再次被访问的概率;现有的web缓存替换算法中,一些方法侧重时间局限性,一些方法侧重空间局限性,没有有效地基于时间引用,也没有根据文档的大小和取回代价即下载所用时间等因素作有效地平衡;或现有的web缓存替换方法往往侧重于某一性能矩阵,无法通过性能评估达到平衡的结果;现有的web缓存替换算法对于web请求流的特征存在一定程度的依赖,无法自适应外界参数的变化。
综上所述,随着网络信息增长速度远远快于存储速度的增长的情况下,目前所存在的web缓存管理方法只是在特定环境下具有较好的性能,应用在不同的环境中将有不同的表现,目前并没有在所有环境中都足够好的web缓存管理方法。web缓存的管理方法根据web文档更新速度快、动态页面的流行等新需求还要进一步改进。
发明内容
有鉴于此,本发明的主要目的在于提供一种缓存管理方法,使得能够以多个队列的方式进行分类缓存管理。
为了达到上述目的,本发明提供一种缓存管理方法,该方法包括:
获取被请求的web文档,更新web文档的属性,利用该web文档的属性对该web文档进行分类;
根据分类结果将该web文档放置到相应的缓存队列中后,调整该队列中的对象。
所述调整该队列中的对象的步骤包括:按照最近最少使用LRU方法调整该队列中的对象。
所述获取被请求的web文档的步骤包括:从远程web服务器中获取web文档;
所述从远程web服务器中获取web文档后,对该web文档进行分类之前进一步包括:判断缓存中是否有足够的空间存放该web文档,如果是,则对该web文档进行分类;否则,根据对象的取回代价、大小以及未来可能被访问的概率计算每个队列的最早被访问过的对象的访问权重,从缓存中依次删除访问权重最低的对象,直到缓存中有足够的空间存放该web文档,然后对该web文档进行分类。
所述计算访问权重的步骤包括:
获取web文档的取回代价、web文档的大小以及web文档未来可能被访问的概率;
计算所述web文档的取回代价与web文档的大小的商,用该商值乘以所述web文档未来可能被访问的概率得到计算访问权重。
所述获取web文档未来可能被访问的概率的步骤包括:
利用该web文档的最近被访问的记录计算该web文档未来可能被访问的概率P,具体包括:
获取web文档的访问频率、web文档最近被访问的次数以及所述web文档最近被访问的时间间隔;
当该web文档最近被访问的次数至少3次时,P的计算公式为,
当该web文档最近被访问的次数少于3次时,P的计算公式为,
其中,f为web文档的访问频率,N为表示所有被访问web文档的总数的常数,λ为可调节的常数,Δt是web文档被访问的时间间隔,L为该web文档最近被访问的次数。
所述对web文档进行分类的步骤包括:根据该web文档的大小、web文档的取回代价、web文档的访问频率计算该web文档的分类权重后,根据分类权重对该web文档分类。
所述计算分类权重的步骤包括:
获取web文档的大小、web文档的取回代价以及web文档的访问频率;
利用如下公式计算得到所述分类权重:
其中,s为web文档的大小,c为web文档的取回代价,f为web文档的访问频率,λ1,λ2,λ3为可调节的常数。
所述根据分类结果将web文档放置到相应的缓存队列的步骤包括:根据web文档的分类权重计算队列号,并将该web文档放置到相应队列号的缓存队列中。
所述计算队列号为:对分类权重取以可调节的常数为底的对数后取下整数,得到所述队列号。
所述可调节的常数是通过周期性地利用历史访问数据进行学习调节得到。
所述更新的web文档的属性包括:访问时间、大小、取回代价、最后修改时间、过期时间、访问次数、最近访问历史。
所述获取web文档的步骤包括:根据所请求的web文档,判断该web文档是否在缓存中,如果该web文档不在缓存中,则直接从远程web服务器中获取被请求的web文档;
如果该web文档在缓存中,则再判断缓存中的该web文档是否已过期,如果是,则删除缓存中的该过期的web文档,并从远程web服务器中获取被请求的web文档;否则,从缓存中获取该web文档。
根据本发明提供的缓存管理方法,对每一个web文档进行分类管理,对每一队列又使用LRU方法进行调整,实现了多队列的web缓存管理。对web文档进行分类时根据对象的大小、取回代价、访问频率等属性以及可调节的参数进行合理地分类,有效地对缓存作了平衡,又通过对每一队列考虑时间特性进行调整,实现了有效的基于时间的引用。在访问权重的计算过程中利用了web对象的取回代价、大小、未来可能被访问的概率以及可调节的参数,充分考虑了空间局限性和时间局限性。在分类权重和访问权重的计算中不仅考虑了对象属性,还使用了可调节的参数,这些参数是可以通过周期性地利用历史访问数据进行学习调节的,因此,能够通过参数的调节达到缓存管理中各种性能的平衡,也能够通过调节参数适应各种应用环境,而且能够根据外界参数的变化可以随时调节其参数值。
附图说明
图1所示为现有技术中web缓存管理流程图;
图2所示为本发明中web缓存管理流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面举具体实施例,对本发明作进一步详细的说明。
本发明提出的web缓存的管理方法是基于有限记忆的多最近最少使用算法(Latest Recently Used,LRU)队列的web缓存管理方法,其主要思想是:获取被请求的web文档后,对该web文档进行分类,并根据分类结果将该web文档放置到相应的队列中后,调整该队列中的对象。其中,对队列的对象使用LRU进行调整。
下面结合图2所示的web缓存的管理流程,详细说明分类管理web文档的过程。
步骤201:用户请求一个web文档O。
步骤202:判断用户请求的web文档O是否在缓存中,如果是,则执行步骤203;否则,执行步骤205。
步骤203:比较请求的web文档O与缓存中的web文档O的大小和最后刷新时间,判断该缓存中的web文档O是否已过期,如果已过期,则执行步骤204;否则,执行步骤208。
步骤204:删除缓存中该过期的web文档O。
步骤205:从远程web服务器中获取被请求的web文档O,并返回给用户。
步骤206:比较该web文档O的大小与缓存中剩余空间的大小,判断缓存中是否有足够的空间存放该web文档O,如果没有,则执行步骤207;如果有,则执行步骤209。
步骤207:计算每个队列的队尾的对象的访问权重,即计算每个队列的最早被访问过的对象的访问权重,从缓存中依次删除访问权重最低的对象,直到缓存中有足够的剩余空间来存放该web文档O,然后执行步骤209。
步骤208:从缓存中获取该web文档O,并返回给用户。
步骤209:更新web文档O的相关属性,要更新的属性包括该web文档O的访问时间、大小、取回代价、最后修改时间、过期时间、访问次数、最近访问历史等,然后利用web文档O的一些属性计算分类权重后,根据分类权重分类该web文档O,并将该web文档O存放到相应的缓存队列中后,对该队列使用LRU的方式进行调整,结束本流程。
下面详细介绍上述步骤207中根据访问权重删除历史web文档的方法和步骤209中根据分类权重重新分类web文档的方法。
(一)根据分类权重重新分类web文档的方法:
多队列的web缓存管理,即分类管理web文档的方法是主要考虑优化时间复杂性而提出的方案。
web文档是根据分类权重进行分类,分类权重的设计原则是,基于算法性能与文件命中率(HR)、字节命中率(BHR)以及延迟命中率(DSR)等多种评估标准设计分类权重的计算公式。在该公式中考虑最为重要的几个特征,分别为:
与HR和BHR相关的web对象的大小,用s表示;
与DSR相关的web对象的取回代价,用c表示;
与HR相关的web对象的访问频率,用f表示。
在分类权重的公式中主要考虑了空间局限性的因素,而在分类之后使用LRU方法进行调整中考虑了对时间局限性的因素。
考虑以上特征,分类权重的计算公式为
其中,λ1,λ2,λ3为可调节的参数,这些参数的具体取值可通过周期性的历史访问数据进行学习确定,例如对最近一天或几天的历史数据利用遗传算法等优化算法对参数进行学习和优化,根据具体应用环境的不同可以调节参数的具体值,使得该缓存管理算法能够适应变化的环境。目前,结合多次实验得出的取值范围分别为:λ1的取值范围是0.8~2;λ2的取值范围是1~8;λ3的取值范围是0.1~1。根据实验经验得出的默认值分别为:λ1=1;λ2=5;λ3=0.25。
得出当前web文档的分类权重之后,根据分类权重Vc值确认当前web文档要放置的队列号k,计算队列号的主要目的是使得web对象依据分类权重合理地进行分类,队列号k的计算公式为
klogq(v)
其中q为确定分类的边界的常数,q的取值范围为1.1~20,默认值为q=1.5。公式中的为往下取整的算法,例如,logq(Vc)的计算结果为3.5,则k取3。
根据分类权重将web文档分类至不同的队列时,分类到第k的队列的分类权重的取值边界为pk~pk+1。
以上所述的分类管理中,对于每一个队列的长度没有特殊的要求,对于队列的总个数可以设置队列个数的最大值,例如可以设置web文档最多能够分成64个队列。目前实验表现队列总数通常小于10个。
根据以上分类权重的计算公式和队列号的计算公式,将所要存储的web文档放置到相应的队列中,并对该队列再使用LRU方法进行调整。
LRU是单队列缓存的一种经典算法。LRU算法中仅考虑web对象的访问时间这一因素,具体方法是按照被访问的时间顺序进行调整,类似于“先进先出”。
如果队列的队头表示最后被访问的对象,而队列的队尾对象为最早被访问的对象,这时,根据LRU方法进行调整的结果为:分类到该队列的web文档直接插入到该队列的队头,该队列的其它对象的相对位置不改变。
(二)计算访问权重的方法:
当web缓存已满需要删除缓存中对象时,对每个LRU队尾的对象计算其访问权重,访问权重表示web对象再次被访问的概率。访问权重计算公式的设计中需要考虑空间局限性和时间局限性,该公式中需要考虑的最为重要的几个特征分别为:
用来处理web的非统一对象,用c/s表示,其中c为web对象的取回代价,s为web对象的大小;
web对象未来可能访问的概率,用P表示。
对于web对象未来可能被访问的概率P还需要考虑空间局限性和时间局限性,包括以下两个特征:
反映web空间局限性的参数,用f/N表示,其中f为web对象被访问的概率,N为表示所有被访问web对象的总数的常量。算法实际应用时因为所有访问权重都用到N,所以可将N设为任意值,如N=1;
确定web对象概率的偏好,用F函数表示,F函数为
其中λ为常数,取值范围为0.4~0.8,当λ小于0.5时偏向于web特征的空间局限性,当λ大于0.5时偏向于web特征的时间局限性。在本实施例中,λ的默认值设为0.5。
考虑以上特征,访问权重的计算公式为
其中,P为web对象未来可能被访问的概率,P的计算公式为
其中,
使用web对象访问的历史,F函数中Δt是web对象被访问的时间间隔,其值为最近被访问的时间减去上一次被访问的时间,L是大于等于2的的常数。因此,在计算一web文档未来可能被访问的概率P的时候,该web文档至少被访问3次之后,P的计算公式采用
如果web文档被访问2次和1次时,P的计算公式是
针对web缓存分类管理的方法,下面假设两种情况,分别描述分类管理的结果。
假设1:用户请求web文档O,由于缓存中不存在该web文档O,从远程web服务器中获取web文档O返回给用户后,缓存需要保存该web文档O时发现缓存中已没有足够的空间。
根据假设1,这时计算每个队列的队尾对象的访问权重,计算结果第1队列的队尾对象web文档A的访问权重最低,第2队列的队尾对象web文档B的访问权重次低,因此,首先将web文档A从缓存中删除,如果这时缓存中还没有足够的空间存储该web文档O,则再删除访问权重次低的web文档B,类似的依次删除访问权重次低的web文档,直到缓存中有足够的剩余空间来存放该web文档O;更新该web文档O的相关属性,包括访问时间、大小、取回代价、最后修改时间、过期时间、访问次数、最近访问历史等,然后计算web文档O的分类权重,根据分类权重计算出该web文档O需要存放到队列号为2的队列,因此,将该web文档O放置到第2队列后,对该第2队列使用LRU方法调整,最后结果为web文档O被放置在第2队列的对头,第2队列的其它对象的相对位置保持不变。
假设2:用户请求web文档O,由于缓存中的第3队列中存在该web文档O且没有过期,从缓存中获取该web文档O返回给用户。
根据假设2,由于web文档O是在缓存中的,因此只需要对该web文档更改属性后重新分类即可,具体步骤如下:更新该web文档O的相关属性,包括访问时间、大小、取回代价、最后修改时间、过期时间、访问次数、最近访问历史等;然后重新计算该web文档O的分类权重,根据分类权重计算出该web文档O需要存放到队列号为4的队列,因此,将该web文档O从第3队列中取出并重新放置到第4队列,然后对该第4队列使用LRU方法调整,而第3队列中取出web文档O后其它对象的相对位置不变。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。