缓存方法、装置以及计算机存储介质与流程

文档序号:18196746发布日期:2019-07-17 05:54阅读:173来源:国知局
缓存方法、装置以及计算机存储介质与流程

本发明涉及计算机技术领域,特别涉及一种缓存方法、装置以及计算机存储介质。



背景技术:

缓存服务器是cdn(contentdeliverynetwork,内容分发网络)的边缘服务器。缓存内容存储在本地硬盘,为提高海量缓存内容并发存取速度,一般会提供多个硬盘分布式存储。一个url(uniformresourcelocator,统一资源定位符)对应的页面的内容缓存为一个文件,缓存文件存储目录和文件名都经过加密。缓存服务器按url计算的散列算法把缓存文件分散到不同硬盘中,即使同一域名目录下的url也不一定会存储在一个硬盘下。

对于单个url的刷新,缓存服务器接收到刷新请求后,会按缓存时相同的算法计算该url存储的硬盘和路径位置以及加密后的文件名,然后删除该文件。但对于一个目录的整体刷新,缓存服务器处理效果就很复杂了,因为文件名是加密处理过的,所以遍历硬盘方式是找不出来的;由于同一目录下的url存储位置是分布式的,所以不能按该目录名找到该目录下的所有url存储位置;一个目录下本地存储了哪些url也是不知道的,故按照url一个一个计算缓存文件位置然后删除的方法也是行不通的。目前对于同一目录下的url进行刷新有以下方法:

方法一:缓存服务器收到目录刷新请求时不删除该目录下的所有url的缓存文件,只是记录下此目录有刷新要求及刷新任务时刻,在有互联网用户请求时会查询此请求的url是否在有刷新请求的目录下,若是且当前缓存文件更新时间在刷新任务时刻之前,则去源站抓取最新内容并更新缓存。

方法二:缓存服务器收到目录刷新请求时,把当前所有缓存文件名导入数据库进行排序,找到要刷新目录下的所有文件,然后删除这些文件。



技术实现要素:

发明人发现,由于上述方法中,在文件进行缓存后没有对文件的缓存信息进行很好的管理,当有刷新任务时无法迅速查找到对应的文件,导致刷新url或目录对应的文件的方法复杂,效率低。

本发明所要解决的一个技术问题是:提出一种文件缓存信息的管理方法,能够迅速查找到文件缓存信息,便于简单高效的对缓存文件进行刷新。

根据本发明的一个实施例,提供的一种缓存方法,包括:将缓存文件对应的统一资源定位符url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待插入的url;从待插入的url的第一个字符和url树的根节点开始进行匹配:如果当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点;如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符为当前节点对应的首字符,则将当前字符以及当前字节之后的所有字符作为当前节点的父节点的子节点插入;如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符不是当前节点对应的首字符,则提取当前节点中与当前字符匹配不同的字符之前的字符作为新节点取代当前节点,提取与当前字符匹配不同的字符以及之后的字符作为新节点的第一子节点插入,将当前字符以及当前字符之后的所有字符作为新节点的第二子节点插入,当前节点的各子节点至各叶子节点的各条路径插入第一子节点之后;将待插入的url对应的缓存文件的缓存信息存储至待插入的url的最后一个字符对应的节点中。

在一个实施例中,该方法还包括:将待刷新文件对应的url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待刷新的url;将待刷新的url的字符与url树中各个节点对应的字符进行匹配,得到待刷新的url的最后一个字符对应的节点;根据待刷新的url的最后一个字符对应的节点中存储的文件的缓存信息,查找到的对应的文件,并对文件进行刷新。

在一个实施例中,该方法还包括:将待刷新文件对应的域名的各字段进行反序排列,各字段内各个字符的顺序不变,得到待刷新的域名;将待刷新的域名的字符与url树中各个节点对应的字符进行匹配,得到待刷新的域名的最后一个字符对应的节点;根据待刷新的域名的最后一个字符对应的节点以及该节点的各个子节点中存储的文件的缓存信息,查找到对应的各个文件,并对各个文件进行刷新。

在一个实施例中,将待刷新的url的字符与url树中各个节点对应的字符进行匹配包括:从待刷新的url的第一个字符和url树的根节点开始进行匹配:如果待刷新的url当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的url的全部字符匹配完。

在一个实施例中,将待刷新的域名的字符与url树中各个节点对应的字符进行匹配包括:从待刷新的域名的第一个字符和url树的根节点开始进行匹配:如果待刷新的域名的当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的域名的全部字符匹配完。

在一个实施例中,url树中各节点中存储该节点的子节点的起始值,该节点的子节点索引数组,子节点的起始值为各个子节点的对应的首字符的最小值,子节点索引数组中分别存储各个子节点在内存中的地址;选取当前节点的子节点更新为当前节点包括:利用当前字符减去当前节点对应的子节点的起始值,得到当前节点的子节点索引数组值;根据子节点索引数组值查找到对应的子节点索引数组;根据子节点索引数组中的内存地址查找到对应的子节点,并将该子节点更新为当前节点。

在一个实施例中,字符中除去分隔符之外的其他字符采用美国信息交换标准代码ascii码表示,分隔符中点和斜线分别采用不同的预设数值表示。

根据本发明的另一个实施例,提供的一种缓存装置,包括:url转换模块,用于将缓存文件对应的统一资源定位符url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待插入的url;

url插入模块,用于从待插入的url的第一个字符和url树的根节点开始进行匹配:如果当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点;如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符为当前节点对应的首字符,则将当前字符以及当前字节之后的所有字符作为当前节点的父节点的子节点插入;如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符不是当前节点对应的首字符,则提取当前节点中与当前字符匹配不同的字符之前的字符作为新节点取代当前节点,提取与当前字符匹配不同的字符以及之后的字符作为新节点的第一子节点插入,将当前字符以及当前字符之后的所有字符作为新节点的第二子节点插入,当前节点的各子节点至各叶子节点的各条路径插入第一子节点之后;缓存信息存储模块,用于将待插入的url对应的缓存文件的缓存信息存储至待插入的url的最后一个字符对应的节点中。

在一个实施例中,该装置还包括:url刷新模块,用于将待刷新文件对应的url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待刷新的url,将待刷新的url的字符与url树中各个节点对应的字符进行匹配,得到待刷新的url的最后一个字符对应的节点,根据待刷新的url的最后一个字符对应的节点中存储的文件的缓存信息,查找到的对应的文件,并对文件进行刷新。

在一个实施例中,该装置还包括:目录刷新模块,用于将待刷新文件对应的域名的各字段进行反序排列,各字段内各个字符的顺序不变,得到待刷新的域名,将待刷新的域名的字符与url树中各个节点对应的字符进行匹配,得到待刷新的域名的最后一个字符对应的节点,根据待刷新的域名的最后一个字符对应的节点以及该节点的各个子节点中存储的文件的缓存信息,查找到对应的各个文件,并对各个文件进行刷新。

在一个实施例中,url刷新模块用于从待刷新的url的第一个字符和url树的根节点开始进行匹配:如果待刷新的url当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的url的全部字符匹配完。

在一个实施例中,目录刷新模块用于从待刷新的域名的第一个字符和url树的根节点开始进行匹配:如果待刷新的域名的当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的域名的全部字符匹配完。

在一个实施例中,url树中各节点中存储该节点的子节点的起始值,该节点的子节点索引数组,子节点的起始值为各个子节点的对应的首字符的最小值,子节点索引数组中分别存储各个子节点在内存中的地址;url插入模块用于利用当前字符减去当前节点对应的子节点的起始值,得到当前节点的子节点索引数组值,根据子节点索引数组值查找到对应的子节点索引数组,根据子节点索引数组中的内存地址查找到对应的子节点,并将该子节点更新为当前节点。

在一个实施例中,字符中除去分隔符之外的其他字符采用美国信息交换标准代码ascii码表示,分隔符中点和斜线分别采用不同的预设数值表示。

根据本发明的又一个实施例,提供的一种缓存装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器设备中的指令,执行如前述任一个实施例的缓存方法。

根据本发明的再一个实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一个实施例的缓存方法。

本发明中将各个缓存文件的url存储于url树中,url树中各个节点存储有字符,字符的数量不定,同一层的各个节点的首字符不同,并且从根节点到各个叶子节点或中间节点的字符可以组成一个完整的url或域名,缓存文件的缓存信息则存储于url最后一个字符对应的节点中。url树的存储结构便于查找和管理,当有文件刷新请求时,可以根据对应的url或域名简单快速的查找到对应的缓存信息,进而对文件进行刷新。此外,url树的存储结构能够节省存储空间。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

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

图1示出本发明的一个实施例的缓存装置的结构示意图。

图2示出本发明的另一个实施例的缓存装置的结构示意图。

图3示出本发明的一个实施例的缓存方法的流程示意图。

图4示出本发明的一个实施例的url树的结构示意图。

图5示出本发明的另一个实施例的缓存方法的流程示意图。

图6示出本发明的一个实施例的缓存装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

针对现有技术中文件缓存方式导致文件刷新的方法复杂、效率低的问题,提出本方案。

本发明的实施例中的缓存装置可各由各种计算设备或计算机系统来实现,下面结合图1以及图2进行描述。

图1为本发明缓存装置的一个实施例的结构图。如图1所示,该实施例的装置10包括:存储器110以及耦接至该存储器110的处理器120,处理器120被配置为基于存储在存储器110中的指令,执行本发明中任意一个实施例中的缓存方法。

其中,存储器110例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)、数据库以及其他程序等。

图2为本发明缓存装置的另一个实施例的结构图。如图2所示,该实施例的装置20包括:存储器210以及处理器220,存储器210以及处理器220分别与图1中存储器110以及处理器120类似。还可以包括输入输出接口230、网络接口240、存储接口250等。这些接口230,240,250以及存储器210和处理器220之间例如可以通过总线260连接。其中,输入输出接口230为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口240为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口250为sd卡、u盘等外置存储设备提供连接接口。

本发明提出一种缓存方法,下面结合图3和图4进行描述。

图3为本发明缓存方法一个实施例的流程图。如图3所示,该实施例的方法包括:

步骤s302,将缓存文件对应的url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待插入的url。

例如,www.test.cn/2014/07/12,域名部分为www.test.cn,域名各个字段进行反序排列为cn.test.www,除域名部分之外的字段以及各字段内各个字符的顺序不变,则转换为cn.test.www/2014/07/12。

为了便于存储和匹配,可以将url转换为长整数。具体的,字符中除去分隔符之外的其他字符采用ascii码(美国信息交换标准代码)表示,分隔符中点和斜线分别采用不同的预设数值表示。例如点(.)用0表示,斜线(/)用1表示。分隔符不采用ascii码表示便于区分url中不用于表示分隔符的点或斜线。实际匹配时,匹配字符对应的数值。

例如,cn.test.www/2014/07/12转换为长整数(16进制)为636e07465737407777771323031341303713132。63为c的ascii码,依次类推。

步骤s304,选取待插入的url的第一个字符作为当前字符,选取url树的根节点作为当前节点。

通常情况下url树中的根节点为入口,不存储具体字符,而存储子节点的内存位置。

步骤s306,判断当前节点对应的字符是否全部匹配完,如果匹配完,则执行步骤s308,否则执行步骤s310。

步骤s308,选取当前节点的子节点更新为当前节点。回到步骤s306重新开始执行。

如图4中所示,为利用urlwww.test.cn,www.test.cn/news,www.test.cn/2016/08,video.uv.cn/study.mp4,www.test.com,mp3.test.com/10.mp3,mp3.test.com/13.mp3构建的url树。

假设待插入的url为cn.test.www/2014/07,首先匹配url的第一个字符c,从根节点入口进入,根节点中没有字符则将根节点的子节点更新为当前节点。

可以按照预设顺序例如从左至右的顺序选取当前节点的子节点更新为当前节点。

步骤s310,判断当前字符与当前节点对应的未匹配过的字符中的首字符是否相同,如果相同,则执行步骤s312,否则,执行步骤s314。

步骤s312,将待插入的url的下一字符更新为当前字符。回到步骤s306重新开始执行。

如图4中所示,将url的第一个字符c,与根节点的子节点匹配,匹配相同,则将n更新为当前字符。

步骤s314,判断与当前字符匹配不同的字符是否为当前节点对应的首字符。如果是,则执行步骤s316,否则,执行步骤s318。

步骤s316,将待插入的url的当前字符以及当前字节之后的所有字符作为当前节点的父节点的子节点插入。

如图4中所示,假设www.test.cn/2016/08和www.test.cn/news也没有插入url树中,待插入的url为cn.test.www/2014/07,则不存在test.www/的节点。当前字符为t时,与uv对应的节点进行匹配,两者不同,且t与首字符v不同,则将t和t之后的全部字符作为n.的子节点插入。至此,一个待插入的url插入url树中。

步骤s318,提取当前节点中与当前字符匹配不同的字符之前的字符作为新节点取代当前节点,提取与当前字符匹配不同的字符以及之后的字符作为新节点的第一子节点插入,将待插入的url中当前字符以及当前字符之后的所有字符作为新节点的第二子节点插入,当前节点的各子节点至各叶子节点的各条路径插入第一子节点之后。

本发明中,第一子节点和第二子节点中的“第一”、“第二”仅用于区分不同的子节点,不起任何其他限制作用。

如图4,假设待插入的url为cn.test.www/2014/07,当前字符为4,当前节点为2016对应的节点,将4与6进行匹配,两者不同,且6不是2016的首字符,则提取6之前的字符201构建新节点,将6和之后的字符作为201的第一子节点插入,将当前字符4和之后的字符/07作为201的第二子节点插入,当前节点2016的各子节点至各叶子节点的各条路径插入第一子节点6之后。

需要说明的是,如果当前字符及其之后的字符过长时,也可以根据分隔符进行拆分作为多个节点,例如,cn.test.www/2014/07作为第一个节点插入url树中时,由于没有其他url,则可以直接作为根节点的子节点插入,也可以按照顺序拆分为多个节点,如cn.为一个节点,test.为一个节点,www/为一个节点,2014/为一个节点,07为一个节点,并按照url由上到下的层级安排各个节点的父子关系。

步骤s320,将待插入的url对应的缓存文件的缓存信息存储至待插入的url的最后一个字符对应的节点中。

如果待插入的url通过上述匹配过程发现url树中已存在相同的url,则只需将缓存文件的缓存信息存储至待插入的url的最后一个字符对应的节点中即可。

url树的一个节点对应一段内存地址,存储有字符以及缓存文件的缓存信息,缓存信息例如包括:在磁盘中的缓存地址以及加密的文件名称。文件名称经过加密,安全系数高,不容易被篡改。

上述实施例的方法,将各个缓存文件的url存储于url树中,url树中各个节点存储有字符,字符的数量不定,同一层的各个节点的首字符不同,并且从根节点到各个叶子节点或中间节点的字符可以组成一个完整的url或域名,缓存文件的缓存信息则存储于url最后一个字符对应的节点中。url树的存储结构便于查找和管理,当有文件刷新请求时,可以根据对应的url或域名简单快速的查找到对应的缓存信息,进而对文件进行刷新。此外,url树的存储结构能够节省存储空间。

本发明还提供基于上述url进行文件刷新的方法,下面结合图5进行描述。

图5为本发明缓存方法另一个实施例的流程图。如图5所示,在步骤s320之后还可以包括:

步骤s502,将待刷新文件对应的url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待刷新的url。

该步骤可参考步骤s302中的方法。

步骤s504,将待刷新的url的字符与url树中各个节点对应的字符进行匹配,得到待刷新的url的最后一个字符对应的节点。

具体匹配过程例如为:

(1)将待刷新的url的第一个字符作为当前字符,选取url树的根节点作为当前节点。

(2)判断当前节点对应的字符全部匹配完,如果匹配完,则执行步骤(3),否则执行步骤(4)。

(3)选取当前节点的子节点更新为当前节点,回到步骤(2)重新开始执行。

(4)判断当前字符与当前节点对应的未匹配过的字符中的首字符是否相同,如果相同,则执行步骤(5)。

(5)判断待刷新的url是否还有未匹配的字符,如果有则回到步骤(2)重新开始执行,否则,匹配结束。

步骤s506,根据待刷新的url的最后一个字符对应的节点中存储的文件的缓存信息,查找到的对应的文件,并对文件进行刷新。

刷新操作可以是将对应的文件进行删除。根据缓存信息中的在磁盘中的缓存地址即可查找到对应的文件。

在步骤s320之后还可以包括:

步骤s508,将待刷新文件对应的域名的各字段进行反序排列,各字段内各个字符的顺序不变,得到待刷新的域名。

对目录下的文件进行刷新即对同一域名下各个url对应的文件进行刷新。该步骤可参考步骤s302中的方法。

步骤s510,将待刷新的域名的字符与url树中各个节点对应的字符进行匹配,得到待刷新的域名的最后一个字符对应的节点。

具体匹配过程例如为:

(1)将待刷新的域名的第一个字符作为当前字符,选取url树的根节点作为当前节点。

(2)判断当前节点对应的字符全部匹配完,如果匹配完,则执行步骤(3),否则执行步骤(4)。

(3)选取当前节点的子节点更新为当前节点,回到步骤(2)重新开始执行。

(4)判断当前字符与当前节点对应的未匹配过的字符中的首字符是否相同,如果相同,则执行步骤(5)。

(5)判断待刷新的域名是否还有未匹配的字符,如果有则回到步骤(2)重新开始执行,否则,匹配结束。

步骤s512,根据待刷新的域名的最后一个字符对应的节点以及该节点的各个子节点中存储的文件的缓存信息,查找到对应的各个文件,并对各个文件进行刷新。

如图4所示,如果待刷新的域名为cn.test.www,查找到该域名最后一个字符对应的节点为test.www/,则根据test.www/及其各个子节点即news、201、4/07、6/08中存储的文件的缓存信息,查找到对应的各个文件,并对各个文件进行刷新。

上述实施例的方法,通过将待刷新的文件对应url和域名与url树的各个节点进行匹配即可快速查找到待刷新的文件的缓存信息,进而快速对文件进行刷新。

上述各个实施例中,待匹配的url或域名匹配完url树中的一层的节点后,会向该层节点的子节点继续进行匹配,可以按照一定的顺序例如从左至右的顺序依次匹配各个子节点,但是可能速度较慢。本发明在上述实施例的url的基础上进一步提出一种节点的存储方式,可以加快匹配速度,下面结合图4进行描述。

url树中一个节点对应一段内存地址,其中存储本节点的属性。节点属性可以包括:本节点key,即本节点对应的字符如步骤s302中的转换方式转换的数值;子节点的起始值,为各个子节点的对应的首字符的最小值;子节点索引数组,子节点索引数组中分别存储各个子节点在内存中的地址;本节点对应的缓存信息。叶子节点肯定有对应的缓存信息,非叶子结点有的也有对应缓存信息。缓存信息包括缓存文件名、缓存文件在磁盘中的位置。

子节点对应的子节点索引数组中=子节点key的首字节-子节点起始值。由于各个子节点的key首字节不一定连续,所以子节点索引数组里有为空的索引值。

例如图4中,201的节点的子节点为4和6,201的节点属性包括:

本节点key即201的ascii码,子节点的起始值即4的ascii码,子节点索引数组即索引数组[0]:4/的存储位置,索引数组[1]:null,索引数组[2]:6/的存储位置。子节点6/的所在的索引数组即6-4=2。

进一步上述实施例中步骤s308中选取当前节点的子节点更新为当前节点包括:利用当前字符减去当前节点对应的子节点的起始值,得到当前节点的子节点索引数组值;根据子节点索引数组值查找到对应的子节点索引数组;根据子节点索引数组中的内存地址查找到对应的子节点,并将该子节点更新为当前节点。

同理,步骤s504中第(3)步和步骤s510第(3)步,也可以采用同样的方式将子节点更新为当前节点。

如图4所示,假设cn.test.www/2015/08为待插入节点,当前字符为5,当前节点为201已经匹配完,需要更新当前节点,则用5减去子节点起始值4得到1为索引数组值,找到索引数组1发现存储为空,则匹配不成功,且与5匹配不成功的字符为该节点首字符,则将5作为201的子节点插入,将5的内存地址存入索引数组1中。

进一步,上述图3中的实施例,在插入url树中原来没有的节点时,可以将节点的内存地址存储至相应的索引数组,即插入的节点的首字符减去插入节点的父节点的子节点的起始值得到相应的索引数组值。如果插入的节点的首字符小于子节点的起始值,则需要新建索引数组,并更新子节点的起始值为插入的节点的首字符的值。

上述实施例的方法能够加快url或域名在url树中的匹配速度,进一步提高效率,从而根据简便高效的实现文件的刷新。

本发明还提供一种缓存装置,下面结合图6进行描述。

图6为本发明缓存装置一个实施例的结构图。如图6所示,该装置60包括:

url转换模块602,用于将缓存文件对应的统一资源定位符url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待插入的url。

url插入模块604,用于从待插入的url的第一个字符和url树的根节点开始进行匹配:

如果当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点;

如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符为当前节点对应的首字符,则将当前字符以及当前字节之后的所有字符作为当前节点的父节点的子节点插入;

如果当前字符与当前节点对应的未匹配过的字符中的首字符不同,且与当前字符匹配不同的字符不是当前节点对应的首字符,则提取当前节点中与当前字符匹配不同的字符之前的字符作为新节点取代当前节点,提取与当前字符匹配不同的字符以及之后的字符作为新节点的第一子节点插入,将当前字符以及当前字符之后的所有字符作为新节点的第二子节点插入,当前节点的各子节点至各叶子节点的各条路径插入第一子节点之后。

在一个实施例中,url树中各节点中存储该节点的子节点的起始值,该节点的子节点索引数组,子节点的起始值为各个子节点的对应的首字符的最小值,子节点索引数组中分别存储各个子节点在内存中的地址。

url插入模块604用于利用当前字符减去当前节点对应的子节点的起始值,得到当前节点的子节点索引数组值,根据子节点索引数组值查找到对应的子节点索引数组,根据子节点索引数组中的内存地址查找到对应的子节点,并将该子节点更新为当前节点。

缓存信息存储模块606,用于将待插入的url对应的缓存文件的缓存信息存储至待插入的url的最后一个字符对应的节点中。

在一个实施例中,缓存装置60还可以包括:

url刷新模块608,用于将待刷新文件对应的url的域名部分的各字段进行反序排列,除域名部分之外的字段以及各字段内各个字符的顺序不变,得到待刷新的url,将待刷新的url的字符与url树中各个节点对应的字符进行匹配,得到待刷新的url的最后一个字符对应的节点,根据待刷新的url的最后一个字符对应的节点中存储的文件的缓存信息,查找到的对应的文件,并对文件进行刷新。

url刷新模块608用于从待刷新的url的第一个字符和url树的根节点开始进行匹配:如果待刷新的url当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的url的全部字符匹配完。

在一个实施例中,缓存装置60还可以包括:

目录刷新模块610,用于将待刷新文件对应的域名的各字段进行反序排列,各字段内各个字符的顺序不变,得到待刷新的域名,将待刷新的域名的字符与url树中各个节点对应的字符进行匹配,得到待刷新的域名的最后一个字符对应的节点,根据待刷新的域名的最后一个字符对应的节点以及该节点的各个子节点中存储的文件的缓存信息,查找到对应的各个文件,并对各个文件进行刷新。

目录刷新模块610用于从待刷新的域名的第一个字符和url树的根节点开始进行匹配:如果待刷新的域名的当前字符与当前节点对应的未匹配过的字符中的首字符相同,则将下一字符更新为当前字符,如果当前节点对应的字符全部匹配完,则选取当前节点的子节点更新为当前节点,直至将待刷新的域名的全部字符匹配完。

上述各个实施例中,字符中除去分隔符之外的其他字符采用美国信息交换标准代码ascii码表示,分隔符中点和斜线分别采用不同的预设数值表示。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一个实施例的方法的步骤。

本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

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

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