具体实施方式
由于现有技术普遍存在着缓存中存储的本地资源利用率不高的问题。本发明实施例提出在缓存中定位资源时,当本地资源标识与URL的对应关系表未存储有访问请求消息中携带的URL时,判断缓存中是否存在与外部网络中所述访问请求消息中携带的URL对应存储位置上的外部资源内容相同的本地资源,若存在与所述外部资源内容相同的本地资源,则在所述对应关系表中增加所述和外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系,以便于后续再次接收到携带有同样URL的访问请求消息时,可以通过查询更新后的对应关系表即可将该访问请求消息定位到缓存中的本地资源,从而提高本地资源的利用率。
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例一
如图2所示,本发明实施例提供的Web缓存更新方案的主要实现原理流程如下:
步骤10,接收到用户的访问请求消息后,判断在本地资源标识与URL的对应关系表中是否存在与所述访问请求消息中携带的URL一致的URL,所述本地资源标识为所述缓存中存储的本地资源的标识;若不存在与所述访问请求消息携带的URL一致的URL,则进入步骤20;
可选地,若存在与所述访问请求消息携带的URL一致的URL,则获取所述对应关系表中所述访问请求消息携带的URL对应的本地资源标识,将所述访问请求消息定位到获取的本地资源标识所标识的本地资源在缓存中的存储位置上;
步骤20,判断缓存中是否存在和外部资源内容相同的本地资源,其中所述外部资源为外部网络中所述访问请求消息中携带的URL对应存储位置上的数据资源,若是进入步骤30;
步骤30,在所述对应关系表中存储所述和外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系。
后续接收到所携带的URL与步骤10中所述访问请求消息携带的URL相同的其他访问请求消息时,由于在步骤30更新后的对应关系表中已存储有该URL,因此可以直接将后续接收到的其他访问请求消息定位到缓存中该URL对应的本地资源标识代表的本地资源的存储位置上,而无需将访问请求消息发送到外部网络中。
通过附图2所示的流程,本实施例提供的技术方案在缓存中存在和用户需要的外部资源内容相同的本地资源、但对应关系表中未存储有所述访问请求消息中的URL时,在对应关系表中增加所述和用户需要的外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系,从而更新对应关系表,使得后续再接收到携带有所述URL的访问请求消息时,能够根据更新后的对应关系表,直接将所述访问请求消息定位到缓存中和用户需要的外部资源内容相同的本地资源所在的存储位置上,从而提高本地资源的命中率。该方案一方面提高了缓存中本地资源的利用率,另一方面可以减少了将访问请求消息发送到外部网络的几率,节省了网络传输资源,减轻了远程资源服务器的处理负荷。
实施例二
在实施例一给出的Web缓存更新方案的基础上,本实施例给出了一种定位资源的方法,具体流程如附图3所示。
步骤301,接收到用户的访问请求消息后,判断在本地资源标识与URL的对应关系表中是否存在与所述访问请求消息携带的URL一致的URL,所述本地资源标识为所述缓存中存储的本地资源的标识;
若存在与所述访问请求消息携带的URL一致的URL,则进入步骤302,否则并行进入步骤304和步骤305。
步骤302,获取所述对应关系表中所述访问请求消息携带的URL对应的本地资源标识,进入步骤303。
步骤303,将所述访问请求消息定位到获取的本地资源标识所标识的本地资源在缓存中的存储位置上。
步骤304,将所述访问请求消息发送到外部网络中,即将所述访问请求消息定位到外部网络中所述访问请求消息中携带的URL对应的存储位置上,从而使得用户获得外部资源。
步骤305,判断缓存中是否存在和外部资源内容相同的本地资源,其中所述外部资源为外部网络中所述访问请求消息中携带的URL对应存储位置上的数据资源,若是进入步骤306,否则流程结束。
步骤306,在所述对应关系表中存储所述和外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系。
可选地,在步骤304之后还包括:
判断在预定时间段内,接收到携带的URL与步骤301中所述访问请求消息携带的URL相同的访问请求消息的次数是否超过预定阈值;若超过设定阈值,则获取并在缓存中存储外部网络中所述URL对应的存储位置上的外部资源,以及在所述对应关系表中存储获取的所述外部资源的标识与所述URL的对应关系,通过该方法可以实时更新缓存中的本地资源。为了节约缓存中有限的存储空间,本发明实施例提供的方案还可以与最近最少使用(LRU,LeastRecently Used)算法相结合,即记录缓存中的每个本地资源的生存时间,当缓存中的剩余存储空间(或者剩余存储空间的比例)低于设定的阈值时,删除较长时间未被定位到的本地资源以及所述对应关系表中与该本地资源的标识对应的URL。
在本实施例中,在对应关系表中未存储与所述访问请求消息携带的URL一致的URL时,及时地将访问请求消息发送到外部网络中,使得用户能够及时从外部网络中获得所需的资源,从而提升用户的感受。
实施例三
本实施例在实施例一给出的Web缓存更新方案的基础上,给出了一种定位资源的方法,具体流程如附图4所示。
步骤401,接收到用户的访问请求消息后,判断在本地资源标识与URL的对应关系表中是否存在与所述访问请求消息携带的URL一致的URL,所述本地资源标识为所述缓存中存储的本地资源的标识;
若存在与所述访问请求消息携带的URL一致的URL,则进入步骤402,否则进入步骤404。
步骤402,获取所述对应关系表中所述访问请求消息携带的URL对应的本地资源标识,进入步骤403。
步骤403,将所述访问请求消息定位到获取的本地资源标识所标识的本地资源在缓存中的存储位置上。
步骤404,判断缓存中是否存在和外部资源内容相同的本地资源,其中所述外部资源为外部网络中所述访问请求消息中携带的URL对应存储位置上的数据资源,若是并行地进入步骤405和步骤406,否则进入步骤407。
步骤405,将所述访问请求消息定位到缓存中与外部资源内容相同的本地资源的存储位置上。
步骤406,在所述对应关系表中存储所述和外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系。
步骤407,将所述访问请求发送到外部网络中,将所述访问请求消息定位到外部网络中所述URL对应的存储位置,从而使得用户获得外部资源。
可选地,在步骤406之后还包括:
判断在预定时间段内接收到所携带的URL与步骤401中所述访问请求消息携带的URL相同的访问请求消息的次数是否超过预定阈值;若超过设定阈值,则获取并在缓存中存储外部网络中所述URL对应的存储位置上的外部资源,以及在述对应关系表中存储所述外部资源的标识与所述URL的对应关系。通过该方法可以实时更新缓存中的本地资源。由于该方案在接收到所携带的URL未在对应关系表中的访问请求消息时,首先判断该访问请求所请求的外部资源与本地资源的内容是否相同,然后根据判断结果来更新对应关系表,所以能够在一定程度上降低下载外部资源的几率,即将一部分需要从外部网络下载外部资源的情况转换为了仅更新对应关系表,避免在缓存中存储多个下载所依据的URL不同(或者资源标识不同)、但内容相同的资源,从而降低了缓存资源的冗余度。
在此基础上,为了节约缓存中有限的存储空间,本发明实施例提供的方案还可以与LRU算法相结合,即记录缓存中的每个本地资源的生存时间,当缓存中的剩余存储空间(或者剩余存储空间的比例)低于设定的阈值时,删除较长时间未被定位到的本地资源、以及所述对应关系表中与该本地资源的标识对应的URL。该方案能够在缓存中的存储资源有限的前提下减少长期未被使用的本地资源。
本实施例与实施例二相比较,在对应关系表中未存在与所述访问请求消息携带的URL一致的URL时,不是直接将该访问请求消息发送到外部网络中,而是根据步骤403“判断缓存中是否存在与外部网络中所述访问请求消息中携带的URL对应存储位置上的外部资源内容相同的本地资源”的判断结果,再确定是将所述访问请求消息定位到外部网络中所述URL对应的存储位置上,还是定位到与所述外部网络中所述URL对应的存储位置上的外部资源内容相同的本地资源的存储位置上,虽然在一定程度上会延长用户获得所需资源的时间,但是在缓存中存储有与所需的外部资源内容相同的本地资源时可以节约网络传输资源,进一步减轻远程资源服务器的处理负荷。
实施例四
在本实施例中详细地介绍实施例一中步骤20、实施例二中步骤305和实施例三中步骤404中“判断缓存中是否存在和外部资源内容相同的本地资源”的具体判断方式。实际中可以采用的判断方法有很多:例如可以对外部资源和每个本地资源执行相同的内容加密或内容校验算法,例如MD5算法等,如果得到的加密结果相同,则说明外部资源与该本地资源内容相同,即缓存中存在和外部资源相同的本地资源,若不存在加密结果与外部资源相同的本地资源,则说明缓存中不存在和外部资源内容相同的本地资源;另外,也可以下载外部资源后,将外部资源与每个本地资源进行逐个字节内容的比较,若存在所有字节内容均与外部资源相同的至少一个本地资源,则说明缓存中存在和外部资源内容相同的本地资源,否则说明缓存中不存在和外部资源内容相同的本地资源。
下面将结合附图5详细地介绍另一种判断缓存中是否存在和外部资源内容相同的本地资源的方案:
步骤501,从所述外部网络中所述访问请求中携带的URL对应存储位置上的外部资源中抽取部分外部资源,下载所述部分外部资源;
步骤502,针对缓存中的每个本地资源:采用与抽取所述部分外部资源相同的抽取方式抽取部分本地资源,比较所述部分外部资源与所述部分本地资源是否相同,若相同,确定该本地资源与所述外部资源内容相同,否则确定该本地资源与所述外部资源不同;
步骤503,根据步骤502的比较结果,在存在至少一个与所述外部资源内容相同的本地资源时,确定存在与所述外部资源内容相同的本地资源。
其中:步骤501、步骤502中从外部资源和本地资源中抽取部分资源,以及对抽取的资源进行比较的具体方式包括但不限于以下两种:
方式一、
步骤501中,将外部资源分片处理为预定尺寸的至少两个资源小片,从分片处理获得的资源小片中随机抽取至少一个资源小片,并记录抽取的每个资源小片相对于所述外部资源的起始位置的相对位置,下载抽取的外部资源小片;
类似地,在步骤502中,将本地资源分片处理为所述预定尺寸的资源小片;以该本地资源的起始位置为基准,在记录的从外部资源中抽取每个资源小片的相对位置上抽取一个资源小片;比较在同一相对位置上抽取的外部资源小片和本地资源小片是否均相同;若相同,确定该本地资源与所述外部资源内容相同,否则确定该本地资源与所述外部资源不同。
方式二、
步骤501中,将外部资源分片处理为预定尺寸的至少两个资源小片,从分片处理获得的资源小片中随机抽取至少一个资源小片,并记录抽取的每个资源小片相对于所述外部资源的起始位置的相对位置,下载抽取的外部资源小片;
将所述下载的外部资源小片处理为二进制流,对二进制流进行加密计算获得第一索引值。
类似地,在步骤502中,将本地资源分片处理为所述预定尺寸的资源小片;以该本地资源的起始位置为基准,在记录的从外部资源中抽取每个资源小片的相对位置上抽取一个资源小片;将抽取的本地资源小片也处理为二进制流,对该二进制流进行加密计算获得第二索引值;比较所述第一索引值与第二索引值是否相同。
方式一和方式二相比较:方式一原理较为简单,但是需要逐一比较从外部资源和本地资源同一相对位置中抽取的资源小片,效率较低;方式二虽然增加了将资源小片处理为二进制流和加密的步骤,但对于外部资源和每个本地资源来说,只要比较一次索引值即可,提高了执行效率。
实施例五
本实施例将依据本发明上述发明原理,详细介绍一个实施例来对本发明方法的主要实现原理进行详细的阐述和说明。
附图6为本发明实施例应用的实际网络系统的结构示意图。其中,
深度报文检测(DPI,Deep packet Inspection)设备与重定向子系统(RSS,Redirect SubSystem)连接,用于从城域网交换机或路由器传输的网络数据包中提取用户的访问请求消息(关于DPI设备如何通过协议识别分析手段提取用户的访问请求消息在这里将不进行详细论述),并将提取的访问请求消息发送给RSS;
RSS用于管理至少一个缓存子系统(CSS,Cache SubSystem)的缓存中的本地资源,更新和维护本地资源标识与URL的对应关系表(如表1所示),所述本地资源标识是指CSS中存储的本地资源的标识。可选地,在实际存储时,可以使用哈希图HashMap来存储所述对应关系表。
表1
所述RSS还用于根据所述对应关系表,确定将访问请求消息发送到外部网络中,或是通过与城域网之间的交换机所建立的连接将访问请求消息重定位到CSS中本地资源的存储位置上。
如附图7所示,下面以一个具体实例介绍RSS设备的工作流程。
步骤701,RSS接收到DPI设备发来的访问请求消息后,从访问请求消息中获取所携带的URL“http://129.42.14.241:8080/Testfile/http/Message.rar”。
步骤702,RSS将URL“http://129.42.14.241:8080/Testfile/http/Message.rar”与表1所示的对应关系表中的URL进行比较,判断所述对应关系表中是否存在与所述访问请求消息携带的URL一致的URL,若存在与所述访问请求消息携带的URL一致的URL,则获取所述对应关系表中所述访问请求消息携带的URL对应的本地资源标识,将所述访问请求消息定位到获取的本地资源标识所标识的本地资源在CSS中的存储位置上;若不存在一致的URL,则进入步骤703。
步骤703,RSS指示至少一个CSS探测外部网络中所述URL对应的存储位置上的外部资源;
所述探测是指通过浏览器客户端等其他应用程序向网络服务器发送携带有URL的测试消息,并从返回消息中获取URL对应的存储位置上的外部资源是否存在、以及外部资源的标识、大小等外部资源相关参数信息。
步骤704,CSS判断本地缓存中是否存在与所述外部资源的大小是否一致的本地资源,若是,则进入步骤705,否则可以直接确认不存在与所述外部资源相同的本地资源。
步骤705,CSS将所述外部资源划分为预定尺寸的资源小片,例如将该外部资源划分为尺寸为1k的资源小片,假定在本实施例中外部资源的大小为1GB,因此分片处理得到1048576(1024*1024)个资源小片。
步骤706,CSS从步骤705分片处理得到的1048576个资源小片中随机抽取4个资源小片:A1、B1、C1和D1,并记录抽取的每个资源小片相对于所述外部资源的起始位置的相对位置,下载抽取的外部资源小片,并行地进入步骤707和709;
可选地,为了避免重复抽取到同一个资源小片,可以先将分片处理得到的1048576个资源小片顺序地划分为4份(即第1份为第1个至第262144个资源小片,第2份为第262145个至524288个资源小片,第3份为第524289个至第786432个资源小片,第4份为第786433个至第1048576个资源小片)。然后使用Random伪随机流算法分别从每份中抽取一个资源小片,并记录抽取的每个资源小片相对于所述外部资源的起始位置的相对位置(即下载点),抽取资源小片的位置如表2所示。
表2
资源小片的标识 |
抽取范围 |
下载点 |
A1 |
1~262144 |
125542k |
B1 |
262145~524288 |
511425k |
C1 |
524289~786432 |
654821k |
D1 |
786433~1048576 |
1041256k |
步骤707,CSS将下载的4个资源小片A1、B1、C1和D1转化为二进制流S1,使用加密算法,例如MD5算法对二进制流S1进行加密获得索引值Index1,进入步骤711。
针对CSS中存储的每个本地资源执行步骤708~步骤710,下面以标识为Message.rar的本地资源为例进行介绍,需要说明的是本地资源的标识未必与外部资源的标识相同:
步骤708,CSS将本地资源划分为尺寸为1k的资源小片,在本实施例中对本地资源进行分片处理也得到1048576(1024*1024)个资源小片;
步骤709,CSS从对本地资源进行分片处理得到的1048576个资源小片中,在相对于本地资源起始位置125542k、511425k、654821k、1041256k的位置各抽取一个资源小片,分别为A2、B2、C2和D2;
步骤710,CSS将抽取的4个资源小片A2、B2、C2和D2转化为二进制流S2,使用所述加密算法对二进制流S2进行加密获得索引值Index2;
步骤711,CSS比较索引值Index1和索引值Index2是否相同,若相同,则确定本地资源和所述外部资源内容相同,进入步骤712;否则,确定本地资源和外部资源不同,处理过程结束。
步骤712,CSS通知RSS在如表1所示的对应关系表中存储本地资源标识Message.rar与URL“http://129.42.14.241:8080/Testfile/http/Message.rar”的对应关系,更新后的对应关系表如表3所示。
表3
可选地,为了减少用户的等待时间,RSS在步骤702中确认如表1所示的对应关系表中不存在与所述访问请求消息携带的URL一致的URL时,可以直接将所述访问请求发送到外部网络中,使得用户能够及时从外部网络中获得所需的资源,从而提升用户的感受。
可选地,为了节约网络传输资源,RSS也可以在步骤702中确认如表1所示的对应关系表中不存在与所述访问请求消息携带的URL一致的URL时,先不将所述访问请求消息发送到外部网络,而是根据步骤711的比较结果,再确定是否将访问请求消息发送到外部网络,若CSS中存在与所述外部资源相同的本地资源,则将访问请求消息定位到与外部网络中所述URL对应的存储位置上的外部资源相同的本地资源的存储位置上;否则再将所述访问请求消息发送到外部网络。
可选地,在步骤710之后,还包括:清理下载的外部资源小片、以及抽取的本地资源小片,从而节约存储资源。进一步,为了避免实时清理对处理性能的影响,还可以采用设置定时器的方式,定时清理外部资源小片和本地资源小片。
需要说明的是:附图6中的各设备所实现的功能可以集中在一个独立的实体设备中实现,也可以由更多的分布式设备实现,在实际实施时可以根据实体设备所具备的存储能力、处理性能以及设计需求来决定。
通过本发明实施例提供的技术方案,DPI能够在本地缓存中存储有和用户请求的外部资源内容相同的本地资源、且对应关系表中未存储有访问请求中携带的URL时,在对应关系表中增加该访问请求消息中携带的URL与和用户请求的外部资源内容相同的本地资源的标识的对应关系,从而更新对应关系表。通过上述方案当后续接收到携带有所述URL的访问请求消息时,可以直接将访问请求消息定位到缓存中本地资源的存储位置上,节省了网络传输资源,减轻了远程资源服务器的处理负荷,同时也增加了缓存中本地资源的利用率。
进一步地,CSS还可以记录缓存中的每个本地资源的生存时间,当缓存中的剩余存储空间(或者剩余存储空间的比例)低于设定的阈值时,删除较长时间未被定位到的本地资源、及对应关系表中该本地资源的标识与URL的对应关系,从而在缓存中的存储资源有限的前提下更新缓存中的本地资源,同时降低缓存资源的冗余度。
本发明实施例提供的缓存更新方案可以应用于镜像网站的管理场景、资源下载网站的管理场景、及搜索引擎场景等多种应用场景下。
相应地,本发明实施例还提供了一种Web缓存的更新装置,如图8所示,该装置包括接收单元801、第一判断单元802、第二判断单元803和更新单元804,具体如下:
接收单元801,用于接收用户的访问请求消息;
第一判断单元802,用于判断在本地资源标识与URL的对应关系表中是否存在与接收单元801接收到的所述访问请求消息携带的URL一致的URL,所述本地资源标识为所述缓存中存储的本地资源的标识;
第二判断单元803,用于在第一判断单元802判断出不存在与所述访问请求消息中携带的URL一致的URL时,判断缓存中是否存在和外部资源内容相同的本地资源,其中所述外部资源为外部网络中所述访问请求消息中携带的URL对应存储位置上的数据资源;
更新单元804,用于若第二判断单元803的判断结果为存在和所述外部资源内容相同的本地资源,则在所述对应关系表中存储所述和外部资源内容相同的本地资源的标识与所述访问请求消息中的URL的对应关系。
请参照附图9,可选地,附图8中的第二判断单元803具体包括:
第一抽取子单元901,用于从外部资源中抽取部分外部资源,下载所述部分外部资源;
第二抽取子单元902,用于针对缓存中的每个本地资源:采用与第一抽取子单元901抽取部分外部资源相同的抽取方式抽取部分本地资源;
比较子单元903,用于比较第一抽取子单元901抽取的所述部分外部资源与第二抽取单元子902抽取的所述部分本地资源是否相同,若相同,确定该本地资源和所述外部资源内容相同,否则确定该本地资源和所述外部资源不同;
确定子单元904,用于根据比较子单元903的比较结果,当存在至少一个和所述外部资源内容相同的本地资源时,确定存在和所述外部资源内容相同的本地资源。
可选地,附图9中第一抽取子单元901、第二抽取子单元902和比较子单元903可以采用上述方法实施例四中列举的任意一种方式来对外部资源和本地资源进行处理,在这里不再一一赘述。
可选地,在附图8或附图9中所示的Web缓存的更新装置中增加定位单元805时,所述Web缓存的更新装置还可以用于定位资源(即可以作为一种定位资源的装置),具体地:
请参照附图10a,所述定位单元805,用于在第一判断单元802判断出不存在与所述访问请求消息中携带的URL一致的URL时,将所述访问请求消息定位到外部网络中所述访问请求消息中携带的URL对应存储位置上,或者
请参照附图10b,所述定位单元805,用于在第二判断单元803的判断结果为存在和所述外部资源内容相同的本地资源时,将所述访问请求消息定位到和所述外部资源相同的本地资源在缓存中的存储位置上;在第二判断单元803的判断结果为不存在和所述外部资源内容相同的本地资源时,将所述访问请求消息定位到外部网络中所述访问请求消息中携带的URL对应存储位置上。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。