CN100530186C - 缓存处理方法以及缓存处理*** - Google Patents
缓存处理方法以及缓存处理*** Download PDFInfo
- Publication number
- CN100530186C CN100530186C CNB2006101671808A CN200610167180A CN100530186C CN 100530186 C CN100530186 C CN 100530186C CN B2006101671808 A CNB2006101671808 A CN B2006101671808A CN 200610167180 A CN200610167180 A CN 200610167180A CN 100530186 C CN100530186 C CN 100530186C
- Authority
- CN
- China
- Prior art keywords
- cache
- file
- write
- module
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存处理方法,包括:当需要从网络获取文件时,根据索引在内存缓存模块中查找对应的缓存条目,如果查找到则读取其中文件,否则在磁盘缓存模块中查找,如果查找到则将查找到的缓存条目写入内存缓存模块,并读取所述文件,否则从网络中下载所述文件,在内存缓存模块中根据构造新的缓存条目,并将下载的文件写入内存缓存模块。索引是对Web文件的URL进行哈希得到的长度统一的HASH值;当写入大小小于设定阈值的小文件时,将其写入所包含小文件的大小类别与所要写入的小文件相同且具有足够空间的大文件。本发明还提供了一种缓存处理***。本发明提高了用户访问缓存的速度,降低了***开销,提高了用户浏览WEB网页的速度。
Description
技术领域
本发明涉及存储技术中的缓存(cache)技术领域,特别是一种缓存处理方法以及一种缓存处理***。
背景技术
随着互联网技术的发展,大量的网络用户使用浏览器访问互联网上的WEB服务器,用户通常通过超文本传输协议(HTTP)方式向WEB服务器请求一个URL对应的数据文件,WEB服务器通过HTTP协议对用户请求作出应答,返回所请求的数据文件。
随着用户数量的增大,海量的用户访问竞相使用有限的WEB服务器带宽,导致访问速度下降;同时由于互联网上运营商的不同或者地理环境的差异,也会导致部分用户访问WEB服务器的速度很慢。
WEB加速是一种通过点对点(P2P)的方式加速用户访问WEB服务器网页的方法。用户终端缓存最近访问过的WEB服务器的数据文件。其他用户通过P2P的方式从访问过相同WEB服务器数据文件的用户终端那里获取自身需要的数据文件,并且可以同步使用HTTP方式从WEB服务器获取数据,来加速对WEB服务器的访问。
由于WEB访问的数据文件大多数比较小,而且数量比较多,对于这种形式的大量文件进行数据缓存,其并发磁盘访问会导致***开销较大,从而影响加速效果。同时,由于WEB加速通过P2P的方式来下载cache文件,安全性问题也需要考虑。因此,如何有效地管理缓存成了急需解决的技术问题。
发明内容
有鉴于此,本发明提出了一种缓存处理方法,用以有效管理WEB加速中用户终端的缓存。本发明的另一个目的是提出一种缓存处理***。
根据上述目的本发明提出了一种缓存处理方法,该方法包括:
A.当需要从网络获取文件时,根据索引在内存缓存模块中查找,如果查找到对应的缓存条目,则读取其中的文件,否则执行步骤B;所述索引是对Web文件的统一资源定位符(URL)进行哈希(HASH)后得到的长度统一的HASH值;
B.根据索引在磁盘缓存模块中查找,如果查找到对应的缓存条目,则在内存缓存模块中构造新的条目,将所述磁盘缓存模块中对应的缓存条目中的文件写入所构造缓存条目中,并读取所述文件,否则执行步骤C;
C.从网络中下载获取所述文件,在内存缓存模块中构造新的缓存条目,并在该缓存条目中写入所述文件;
该方法进一步包括:将内存缓存模块中的缓存条目写入磁盘缓存模块;
当写入大小小于设定阈值的小文件时,将其写入所包含小文件的大小类别与所要写入的小文件相同且具有足够空间的大文件或将其写入创建的大文件;
当删除所述小文件时,从其所在的大文件中删除该小文件,并且当所述大文件中没有小文件时,删除所述大文件;
当读取所述小文件时,从其所在的大文件中读取该小文件。
步骤B和步骤C中在内存缓存模块中构造新的缓存条目之前进一步包括判断内存缓存模块是否已满的步骤,如果是,则删除内存缓存模块中最久没有读取的缓存条目,然后执行构造;否则,直接执行构造。
在删除内存缓存模块中所述缓存条目的同时将其写入磁盘缓存模块。
所述将内存缓存模块中的缓存条目写入磁盘缓存模块为:将内存缓存模块中最久没有被访问的缓存条目写入磁盘缓存模块。
在写入磁盘缓存模块之前进一步包括判断磁盘缓存模块是否已满的步骤,如果是,则删除磁盘缓存模块中最久没有被修改的缓存条目,然后执行写入;否则直接执行写入。
所述在缓存条目中写入文件的步骤包括:获取缓存条目的当前访问状态,当缓存条目的当前访问状态是写方式或读方式时,禁止写入;当缓存条目的当前访问状态是没有用户访问时,在该缓存条目中写入文件,并记录缓存条目的当前状态为写方式;在写入结束之后,记录缓存的当前状态为没有用户访问。
读取缓存条目中的文件的步骤包括:获取缓存条目的当前访问状态,当缓存条目的当前访问状态是写方式时,禁止读取;当缓存条目的当前访问状态是读方式或没有用户访问时,读取缓存条目中的文件,并将缓存条目的读用户数加1;在读取结束之后,当缓存条目的读用户数为0时,记录缓存条目的当前状态为没有用户访问。
该方法进一步包括:从磁盘缓存模块中获取缓存条目时,读取其中文件的HASH值,并计算所读取的文件的HASH值,如果两个HASH值相同,则认证所述文件为合法,否则认证所述文件为不合法;和/或,认证通过HTTP方式下载的文件为合法;和/或,部分或者全部通过P2P方式下载文件时,下载对应的HASH值,并计算所下载的文件的HASH值,如果两个HASH值相同,则认证所述文件为合法,否则认证所述文件为不合法。
本发明还提出了一种缓存处理***,该***包括内存缓存模块、磁盘缓存模块以及缓存管理模块,其中:内存缓存模块用于在内存中存储缓存条目;
磁盘缓存模块,用于在磁盘中存储缓存条目;
缓存管理模块,用于当需要从网络获取文件时,根据索引在内存缓存模块中查找,如果查找到对应的缓存条目则读取其中的文件,否则根据索引在磁盘缓存模块中查找,如果查找到对应的缓存条目,则在内存缓存模块中构造新的缓存条目,将所述磁盘缓存模块中对应的缓存条目中的文件写入所构造的缓存条目中,并读取所述文件,否则从网络中下载获取所述文件,在内存缓存模块中根据构造新的缓存条目,并在该缓存条目中写入所述文件;将内存缓存模块中的缓存条目写入磁盘缓存模块;当写入大小小于设定阈值的小文件时,将其写入所包含小文件的大小类别与所要写入的小文件相同且具有足够空间的大文件或将其写入创建的大文件;当删除所述小文件时,从其所在的大文件中删除该小文件,并且当所述大文件中没有小文件时,删除所述大文件;当读取所述小文件时,从其所在的大文件中读取该小文件;所述索引是对Web文件的URL进行HASH后得到的长度统一的HASH值。
从上述方案中可以看出,由于本发明在内存和磁盘中存储缓存条目,在需要获取网页文件时,根据索引先在内存缓存模块中查找,如果查找到对应的缓存条目,则读取其中的文件,如果没有找到则进一步在磁盘缓存模块中查找,如果查找到对应的缓存条目,则在内存缓存模块中构造新的缓存条目,将所述磁盘缓存模块中对应的缓存条目中的文件写入所构造的缓存条目中,从而获取到所述文件,否则从网络中下载获取所述文件,然后在内存缓存模块中根据构造新的缓存条目,并在该缓存条目中写入所述文件,通过上述方案,本发明提高了用户访问缓存的速度,降低了***开销,提高了用户浏览WEB网页的速度。
附图说明
图1为本发明实施例中缓存处理***的结构示意图;
图2为本发明实施例中的cache条目的结构示意图;
图3为本发明实施例中对缓存进行处理的流程示意图;
图4为本发明实施例中在DiskCache中写入cache条目的流程示意图;
图5为本发明实施例中访问cache条目的流程示意图;
图6为本发明实施例中对cache文件进行合法性认证的流程示意图;
图7为本发明实施例中大文件的结构示意图;
图8为本发明实施例中写入小文件的流程示意图;
图9为本发明实施例中删除小文件的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
图1所示的是本发明实施例中缓存处理***的结构示意图。参照图1,该***包括缓存管理模块(CacheMgr)、内存缓存模块(MemoryCache)以及磁盘缓存模块(DiskCache)。
其中,CacheMgr用于管理MemoryCache和DiskCache中缓存数据的写入、读取等操作,其它模块访问缓存都需要以CacheMgr为接口。位于内存中的MemoryCache和位于磁盘中的DiskCache分别用于存储内存中的cache条目和磁盘中的cache条目(Entry)。众所周知,根据访问内存和访问磁盘的特点,对于MemoryCache的访问较快,而对于DiskCache的访问较慢。
MemoryCache是由存储在内存中的cache条目组成,并将内存中的cache条目通过哈希(HASH)表的形式组织起来。在MemoryCache中,主要保存着cache文件、cache条目表(CacheEntryTable)以及MemoryCache的一些属性值,例如最大字节数(MaxBytes)、最大条目数(MaxEntryCount)、MemoryCache的实际字节数(Size)、实际文件数(EntryCount)、删除旧文件的链表(EvicLink)。
DiskCache则记录了磁盘上的cache文件及其索引信息,DiskCache将磁盘上cache文件的索引信息通过HASH表的形式组织起来。索引信息主要包括cache文件名、cache文件的大小,文件块ID等。在DiskCache中,主要保存着cache文件、cache条目表(CacheRecordTable)以及DiskCache的一些属性值,例如最大字节数(MaxBytes)、最大条目数(MaxFileCount)、DiskCache的实际字节数(Size)、实际文件数(FileCount)、删除旧文件的链表(EvicLink)。
图2所示的是cache条目的组织结构图,描述了用于WEB加速的cache条目的整体组织形式,cahe条目图描述了每个文件的URL对应的cache条目的内容。参照图2,每个cache条目记录了一个URL对应的HTTP头部、HTTP数据、HTTP数据有效性信息(Expiretime、LastModifyTime)等在内存中的缓存。在cache条目中,索引(Key)是对URL进行HASH后得到的Key,可以根据该索引查找对应的cache条目;FileHash是对cache文件进行HASH得到的HASH值,可以用来验证文件的安全性;其余的都是现有HTTP协议中规定的内容,这里不再赘述。可以直接使用WEB文件的URL作为索引对文件进行缓存,但是不同URL的长度差别比较大,作为索引在具体实现上需要将索引的长度设置得很大,因此在本发明实施例中,将URL进行HASH,得到长度统一的HASH值,把URL通过HASH得到一个固定长度的Key。然后利用这个HASH值作为索引,这样使得本发明的技术方案实现起来比较方便。MemoryCache中拥有一个cache条目HASH表,其key值由上面描述的URL通过HASH得到,对应的取值(value)则是内存中的cache条目。DiskCache中拥有一个cache索引信息HASH表,其key值由上面描述的URL通过HASH得到,对应的value则是cache文件的索引信息。
图3所示的是WEB加速中浏览器或其它装置需要获取cache文件时的流程示意图。参照图3,该流程包括以下步骤:
步骤101至步骤102,在WEB加速过程中,需要获取某URL的WEB文件时,则通过CacheMgr获取。CacheMgr根据计算得到的该URL的HASH值在MemoryCache中查找,看内存中是否有对应的cache条目存在,如果有则直接命中,执行步骤103;否则,执行步骤104及其后续步骤。
步骤103,从MemoryCache的cache条目中读取对应的文件,并进一步提供给相应模块,例如浏览器等,然后本流程结束。
步骤104至步骤105,CacheMgr根据URL的HASH值在DiskCache中查找,判断是否有对应的cache条目存在,如果有,则需要将该cache条目从DiskCache读取并写入到MemoryCache中,因此执行步骤106及其后续步骤;否则,需要从网络下载该文件,并创建新cache条目写入MemoryCache,则执行步骤109及其后续步骤。
步骤106,由于MemoryCache有最大占用内存空间和最大cache条目数的限制,所以在本步骤中判断MemoryCache是否已满,即cache使用内存是否超过了上述限制,如果是,则执行步骤107及其后续步骤;否则执行步骤108。
步骤107,CacheMgr将MemoryCache中一些最久没有被访问过的cache条目刷新到磁盘上去,即将LastFetchTime最早的一些cache条目删除,并写入DiskCache。
步骤108,CacheMgr根据DiskCache中的索引信息,在MemoryCache中构造新的cache条目,将DiskCache中所述cache条目中的文件写入所构造的cache条目中,并读取到所述文件,然后可以进一步将该文件提供给相应的模块,如浏览器等,至此本流程结束。
步骤109,判断MemoryCache是否已满,如果是,则执行步骤110及其后续步骤;否则,执行步骤111。
步骤110,CacheMgr将MemoryCache中一些最久没有被访问过的cache条目刷新到磁盘上去,即将LastFetchTime最早的一些cache条目删除,并写入DiskCache。
步骤111,根据下载的文件,在MemoryCache创建对应的新cache条目,将URL的HASH值作为cache条目中的Key,并将该文件写入新创建的cache条目,然后可以进一步将下载的文件提供给相应的模块,如浏览器等,至此本流程结束。
在用户访问cache获取文件完成之后,进一步可以在适当的时候,例如在***空闲的时候,将MemoryCache中最久没有被访问的一些cache条目删除,并写入到DiskCache中,并且更新DiskCache的cache索引信息。另外,在上述步骤107和110中也需要将cache条目写入磁盘。图4所示的就是将cache条目写入DiskCache的流程示意图。参照图4,该流程包括以下步骤:
步骤201,由于DiskCache有最大占用磁盘空间和最大cache文件数的限制,因此,CacheMgr判断DiskCache是否已满,即cache使用是否超过了上述限制,如果是,则执行步骤202及其后续步骤;否则,执行步骤203。
步骤202,从磁盘上删除一些最久没有被更新的cache条目,即LastModifyTime最老的cache文件,并且删除对应的磁盘索引条目。
步骤203,将所述的MemoryCache中的cache条目写入DiskCache。
在上述流程中,CacheMgr需要对MemoryCache及DiskCache中的cache条目进行访问。对cache条目的访问有读和写两种方式。读方式访问是从cache条目中读取URL对应的HTTP头部以及HTTP文件等信息。写方式访问是将HTTP头部以及HTTP文件等信息写入cache条目中,以备后续访问。
如图5所示,本发明实施例进一步提出了对cache条目进行访问的具体流程。在本流程中,需要在cache条目中进一步记录自己的当前访问状态,包括访问方式以及以读方式访问自己的用户数,即读用户数。其中,访问方式可以分为:读方式、写方式和没有用户访问。
参照图5,该流程包括以下步骤:
步骤301,从cache条目中读取cache条目的当前访问状态,如果是写方式,则拒绝这次访问,然后可以开始下次访问,再次执行步骤301;如果是读方式,则执行步骤302及其后续步骤;如果是没有用户访问,则执行步骤307及其后续步骤。
步骤302,判断当前是要进行读取还是写入,如果是写入,则拒绝这次访问,然后可以开始下次访问,再次执行步骤301;如果是读方式,则执行步骤303及其后续步骤。
步骤303,以读方式访问cache条目,并将当前状态中的读用户数加1。
步骤304,读取cache条目中的文件结束之后,将读用户数减1。
步骤305,判断当前的读用户数是否等于0,如果是,则执行步骤306及其后续步骤,否则可以开始下次访问,再次执行步骤301。
步骤306,记录当前状态为没有用户访问,然后可以开始下次访问,再次执行步骤301。
步骤307,判断当前是要进行读取还是写入,如果是读取,则执行步骤303及其后续步骤;如果是写入,则执行步骤308及其后续步骤。
步骤308,以写方式访问cache条目,写入文件及相关信息。
步骤309,写入结束之后,记录cache条目的当前状态为没有用户访问。然后,可以执行下一次访问,再次执行步骤301。
在图5所示的流程中,根据所要进行的是写入还是读取可以分为如下两种情形:
情形1:在cache条目中写入文件。获取cache条目的当前访问状态,当cache条目的当前访问状态是写方式或读方式时,禁止写入;当cache条目的当前访问状态是没有用户访问时,在该cache条目中写入文件,并记录cache条目的当前状态为写方式;在写入结束之后,记录cache的当前状态为没有用户访问。
情形2:读取cache条目中的文件。获取cache条目的当前访问状态,当cache条目的当前访问状态是写方式时,禁止读取;当cache条目的当前访问状态是读方式或没有用户访问时,读取cache条目中的文件,并将cache条目的读用户数加1;在读取结束之后,当cache条目的读用户数为0时,记录cache条目的当前状态为没有用户访问。
在读取内存中的cache条目的时候,可以进一步对其合法性进行认证。cache条目中HTTP头部和HTTP文件的来源可能有两种:从磁盘上的cache条目中获取的,或者用户从网络中下载并以写方式写入cache条目的。其中,从网络中下载可以分为完全是HTTP方式下载的以及不完全是HTTP方式下载的,并且不完全是HTTP方式下载的又可以分为完全是P2P方式下载的以及由P2P方式和HTTP方式协同下载的。
如图6所示的是对cache条目进行合法性认证的流程示意图。参照图6,该流程包括:
步骤401,判断该cache条目是从磁盘中获取的,还是从网络中下载的,如果是从磁盘中获取的,则执行步骤402及其后续步骤;如果是从网络中下载的,则执行步骤403及其后续步骤。
步骤402,在从磁盘上读取cache文件时,在读取HTTP头部和HTTP文件的同时,从磁盘上读取cache文件的HASH值V1。然后,对HTTP头部和HTTP文件做一次HASH计算得到一个新的HASH值V2。判断V1是否等于V2,如果等于,则认为cache文件是合法的,否则认为cache文件是不合法的,结束本流程。
步骤403,判断所下载写入cache条目的文件是否是完全由HTTP方式从WEB服务器下载的,如果是,则认为其是合法的,并且对HTTP头部和HTTP文件做一次HASH计算得到一个HASH值,以备后续使用,然后结束本流程;否则,执行步骤404及其后续步骤。
步骤404,这种情况的HTTP头部和HTTP文件有部分或者全部以P2P方式下载获取的,在下载获取同时也会通过P2P方式获取对方缓存中该cache文件的HASH值V3。然后,对本地的HTTP头部和HTTP文件做一次HASH计算,得到一个新的HASH值V4。判断V3是否等于V4,如果等于,则认为cache文件是合法的,否则认为cache文件是不合法的,并结束本流程。
在WEB加速过程中,突发性大量小文件写入会导致***的CPU开销较高,如果在访问cache条目的同时将HTTP头部和文件等内容写入磁盘文件,更会降低用户访问cache效率,从而影响WEB加速的效果。本发明实施例为了提高用户访问cache的效率,从而进一步提高WEB加速的效果,提出了cache文件异步磁盘写入和大文件合并的方法。
cache文件异步磁盘写入是指,用户访问cache的时候只是将cache文件写入到cache条目的内存中,访问完成后将对应的cache条目提交到一个cache刷新链表中去。CacheMgr提供一个独立的刷新线程,根据***的繁忙情况,在***闲时将刷新链表中的cache条目的内容写到磁盘上去,并且同时更新DiskCache对应的索引信息。
大文件合并是通过将多个小文件合并成一个大文件,从而减少了cache条目中文件打开关闭的次数,减少***开销,进一步提高访问cache的速度。
在这里,将大小小于阈值的文件定义为小文件,而将大小大于阈值的文件定义为大文件,不妨以阈值为32KB为例说明。同时,按照文件大小分类,例如:小于1KB的文件,1KB-2KB的文件,2KB-4BK的文件,4KB-8KB的文件,8KB-16KB的文件,16K-32K的文件。
将相同类别的小文件合并成一个大文件,而对于大小超过32KB的文件则不需要合并,可以设定大文件的最大大小为320KB。每个大文件的头部有索引信息,记录自己的使用情况。在本实施例中,大文件头部不包括在所述320KB中。下面以小于1K的小文件合并成的大文件为例说明,其他情况可以类推,这里不再赘述。
参照图7,整个大文件分成两个部分:大文件头部和小文件块组成的文件实体部分。大文件头部记录了以下信息:没有被使用的小文件的个数(UnusedCounts),第一个没有被使用的小文件块ID(FirstUnusedID),一个大小为320Byte的无符号整型(unsignedshort)索引数组(UnusedIDs),数组的每个成员对应于一个小文件块,如果该小文件块还没有被使用,那么其内容为下一个没有被使用的小文件块的ID。每个小文件块中都可以存放一个大小为1KB的文件或小于1KB的文件。
参照图8,当用户写入一个大小不超过1KB的文件的过程如下:
步骤501,找到一个还有空闲小文件块的大文件或者创建一个大文件,所找到的大文件中小文件的大小类别与所要写入的小文件相同。
步骤502,读取FirstUnuseID,将所要写入的小文件写入第一个空闲的小文件块。
步骤503,更新大文件头部,即:
FirstUnusedID=UnusedIDs[FirstUnusedID]
UnusedCounts=UnusedCounts+1
参照图9,当用户删除一个大小不超过1KB的小文件的过程如下:
步骤601,根据DiskCache的索引信息找到对应的大文件和小文件块ID:IDi,然后删除所要删除的小文件。
步骤602,更新大文件头部,即:
UnusedIDs[IDi]=FirstUnusedID
FirstUnusedID=IDi
UnusedCounts=UnusedCounts-1
步骤603,当此时的UnusedCounts等于320时,说明这个大文件已经没有小文件了,那么删除这个大文件。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1、一种缓存处理方法,其特征在于,该方法包括:
A.当需要从网络获取文件时,根据索引在内存缓存模块中查找,如果查找到对应的缓存条目,则读取其中的文件,否则执行步骤B;所述索引是对Web文件的统一资源定位符URL进行哈希HASH后得到的长度统一的HASH值;
B.根据索引在磁盘缓存模块中查找,如果查找到对应的缓存条目,则在内存缓存模块中构造新的条目,将所述磁盘缓存模块中对应的缓存条目中的文件写入所构造缓存条目中,并读取所述文件,否则执行步骤C;
C.从网络中下载获取所述文件,在内存缓存模块中构造新的缓存条目,并在该缓存条目中写入所述文件;
该方法进一步包括:将内存缓存模块中的缓存条目写入磁盘缓存模块;
当写入大小小于设定阈值的小文件时,将其写入所包含小文件的大小类别与所要写入的小文件相同且具有足够空间的大文件或将其写入创建的大文件;
当删除所述小文件时,从其所在的大文件中删除该小文件,并且当所述大文件中没有小文件时,删除所述大文件;
当读取所述小文件时,从其所在的大文件中读取该小文件。
2、根据权利要求1所述的方法,其特征在于,步骤B和步骤C中在内存缓存模块中构造新的缓存条目之前进一步包括判断内存缓存模块是否已满的步骤,如果是,则删除内存缓存模块中最久没有读取的缓存条目,然后执行构造;否则,直接执行构造。
3、根据权利要求2所述的方法,其特征在于,在删除内存缓存模块中所述缓存条目的同时将其写入磁盘缓存模块。
4、根据权利要求1所述的方法,其特征在于,所述将内存缓存模块中的缓存条目写入磁盘缓存模块为:将内存缓存模块中最久没有被访问的缓存条目写入磁盘缓存模块。
5、根据权利要求3或4所述的方法,其特征在于,在写入磁盘缓存模块之前进一步包括判断磁盘缓存模块是否已满的步骤,如果是,则删除磁盘缓存模块中最久没有被修改的缓存条目,然后执行写入;否则直接执行写入。
6、根据权利要求1所述的方法,其特征在于,所述在缓存条目中写入文件的步骤包括:
获取缓存条目的当前访问状态,当缓存条目的当前访问状态是写方式或读方式时,禁止写入;
当缓存条目的当前访问状态是没有用户访问时,在该缓存条目中写入文件,并记录缓存条目的当前状态为写方式;在写入结束之后,记录缓存的当前状态为没有用户访问。
7、根据权利要求1所述的方法,其特征在于,读取缓存条目中的文件的步骤包括:
获取缓存条目的当前访问状态,当缓存条目的当前访问状态是写方式时,禁止读取;
当缓存条目的当前访问状态是读方式或没有用户访问时,读取缓存条目中的文件,并将缓存条目的读用户数加1;在读取结束之后,当缓存条目的读用户数为0时,记录缓存条目的当前状态为没有用户访问。
8、根据权利要求1所述的方法,其特征在于,该方法进一步包括:
从磁盘缓存模块中获取缓存条目时,读取其中文件的HASH值,并计算所读取的文件的HASH值,如果两个HASH值相同,则认证所述文件为合法,否则认证所述文件为不合法;和/或,
认证通过HTTP方式下载的文件为合法;和/或,
部分或者全部通过点对点方式下载文件时,下载对应的HASH值,并计算所下载的文件的HASH值,如果两个HASH值相同,则认证所述文件为合法,否则认证所述文件为不合法。
9、根据权利要求1所述的方法,其特征在于,该方法进一步包括:如果在访问缓存条目的同时将缓存条目写入磁盘缓存模块,则将缓存条目写入内存,待访问完成后将写入内存的缓存条目提交到一个缓存刷新链表中;提供一个独立的刷新线程,在***空闲时将所述缓存刷新链表中的缓存条目写到所述磁盘缓存模块中,并且同时更新磁盘缓存模块对应的索引信息。
10、一种缓存处理***,其特征在于,该***包括内存缓存模块、磁盘缓存模块以及缓存管理模块,其中:
内存缓存模块,用于在内存中存储缓存条目;
磁盘缓存模块,用于在磁盘中存储缓存条目;
缓存管理模块,用于当需要从网络获取文件时,根据索引在内存缓存模块中查找,如果查找到对应的缓存条目则读取其中的文件,否则根据索引在磁盘缓存模块中查找,如果查找到对应的缓存条目,则在内存缓存模块中构造新的缓存条目,将所述磁盘缓存模块中对应的缓存条目中的文件写入所构造的缓存条目中,并读取所述文件,否则从网络中下载获取所述文件,在内存缓存模块中构造新的缓存条目,并在该缓存条目中写入所述文件;将内存缓存模块中的缓存条目写入磁盘缓存模块;当写入大小小于设定阈值的小文件时,将其写入所包含小文件的大小类别与所要写入的小文件相同且具有足够空间的大文件或将其写入创建的大文件;当删除所述小文件时,从其所在的大文件中删除该小文件,并且当所述大文件中没有小文件时,删除所述大文件;当读取所述小文件时,从其所在的大文件中读取该小文件;
所述索引是对Web文件的URL进行HASH后得到的长度统一的HASH值。
11、如权利要求10所述的***,其特征在于,所述缓存管理模块进一步用于,如果在访问缓存条目的同时将缓存条目写入磁盘缓存模块,则将缓存条目写入内存,待访问完成后将写入内存的缓存条目提交到一个缓存刷新链表中;提供一个独立的刷新线程,在***空闲时将所述缓存刷新链表中的缓存条目写到所述磁盘缓存模块中,并且同时更新磁盘缓存模块对应的索引信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101671808A CN100530186C (zh) | 2006-12-26 | 2006-12-26 | 缓存处理方法以及缓存处理*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101671808A CN100530186C (zh) | 2006-12-26 | 2006-12-26 | 缓存处理方法以及缓存处理*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101075241A CN101075241A (zh) | 2007-11-21 |
CN100530186C true CN100530186C (zh) | 2009-08-19 |
Family
ID=38976294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101671808A Active CN100530186C (zh) | 2006-12-26 | 2006-12-26 | 缓存处理方法以及缓存处理*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100530186C (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576855B (zh) * | 2009-06-19 | 2011-05-04 | 深圳市科陆电子科技股份有限公司 | 一种基于缓存的数据存储***及方法 |
CN101710327A (zh) * | 2009-12-04 | 2010-05-19 | 深圳创维数字技术股份有限公司 | 一种嵌入式浏览器本地临时文件的缓存方法 |
CN102117309B (zh) * | 2010-01-06 | 2013-04-17 | 卓望数码技术(深圳)有限公司 | 一种数据缓存***和数据查询方法 |
CN102253941A (zh) * | 2010-05-21 | 2011-11-23 | 卓望数码技术(深圳)有限公司 | 一种缓存更新方法和缓存更新装置 |
CN101877010A (zh) * | 2010-06-12 | 2010-11-03 | 中兴通讯股份有限公司 | 分布式文件***及其协存储方法 |
CN101908077B (zh) * | 2010-08-27 | 2012-11-21 | 华中科技大学 | 一种适用于云备份的重复数据删除方法 |
CN102447688A (zh) * | 2010-10-15 | 2012-05-09 | 盛绩信息技术(上海)有限公司 | 网页游戏资源加速器及加速方法 |
CN102479250A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存方法 |
CN102054031A (zh) * | 2010-12-22 | 2011-05-11 | 上海锐起信息技术有限公司 | 无盘***中实现网络磁盘本地写缓存控制的方法 |
CN102622347A (zh) * | 2011-01-26 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 图片管理方法及移动终端 |
CN102737068B (zh) * | 2011-04-15 | 2018-06-05 | 北京百度网讯科技有限公司 | 一种用于对检索数据进行缓存管理的方法与设备 |
CN102298527B (zh) * | 2011-06-21 | 2017-03-15 | 中兴通讯股份有限公司 | 一种cpe并行升级版本的方法及实现*** |
CN102368258B (zh) * | 2011-09-30 | 2014-11-26 | 广州市动景计算机科技有限公司 | 一种网页页面缓存管理方法及其*** |
CN103106216A (zh) * | 2011-11-15 | 2013-05-15 | 腾讯科技(深圳)有限公司 | 一种网页访问方法和设备 |
CN102411631A (zh) * | 2011-12-22 | 2012-04-11 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法 |
CN103246611B (zh) * | 2012-02-07 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 一种文件处理方法及*** |
CN102609364A (zh) * | 2012-02-14 | 2012-07-25 | 华中科技大学 | 缓存交换方法 |
CN103294718A (zh) * | 2012-02-29 | 2013-09-11 | 腾讯科技(深圳)有限公司 | 网页缓存管理方法和装置 |
CN102638570A (zh) * | 2012-03-15 | 2012-08-15 | 中兴通讯股份有限公司 | 一种嵌入式网络代理***、终端设备及代理方法 |
CN103369284A (zh) * | 2012-03-31 | 2013-10-23 | 浙江大华技术股份有限公司 | 一种音视频数据预录方法及装置 |
CN102663096B (zh) * | 2012-04-11 | 2015-12-16 | 北京像素软件科技股份有限公司 | 一种基于数据缓存技术读取数据的方法 |
CN103514203A (zh) * | 2012-06-27 | 2014-01-15 | 腾讯科技(深圳)有限公司 | 以阅读模式浏览网页的方法及*** |
CN103077198B (zh) * | 2012-12-26 | 2016-09-21 | 中标软件有限公司 | 一种操作***及其文件缓存定位方法 |
CN103051977A (zh) * | 2013-01-11 | 2013-04-17 | 乐视网信息技术(北京)股份有限公司 | 一种处理p2p缓存数据的方法 |
CN103970585B (zh) * | 2013-01-31 | 2017-10-27 | 新华三技术有限公司 | 创建虚拟机的方法及装置 |
CN103279562B (zh) * | 2013-06-09 | 2017-10-10 | 网易(杭州)网络有限公司 | 一种用于数据库二级缓存的方法、装置及数据库存储*** |
CN104424116B (zh) * | 2013-08-19 | 2017-07-07 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法及*** |
CN104423784A (zh) * | 2013-09-04 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 一种页面显示的方法和装置 |
CN104572643B (zh) * | 2013-10-10 | 2018-06-19 | 北大方正集团有限公司 | 搜索方法和搜索引擎 |
CN103873562A (zh) * | 2014-02-27 | 2014-06-18 | 车智互联(北京)科技有限公司 | 缓存方法和缓存*** |
CN104298562A (zh) * | 2014-10-10 | 2015-01-21 | 重庆邮电大学 | 一种游戏开发的资源管理方法及*** |
CN104331428B (zh) * | 2014-10-20 | 2017-07-04 | 暨南大学 | 一种小文件和大文件的存储及访问方法 |
CN104363182B (zh) * | 2014-11-04 | 2018-07-31 | 浪潮(北京)电子信息产业有限公司 | 一种基于双层缓存的负载均衡方法及*** |
CN104572194B (zh) * | 2014-12-30 | 2019-03-08 | 北京奇虎科技有限公司 | 一种模块加载方法和装置 |
CN104794068B (zh) * | 2015-02-04 | 2018-05-22 | 深圳神州数码云科数据技术有限公司 | 一种flush缓存的方法及装置 |
CN106294206B (zh) * | 2015-05-21 | 2022-04-29 | 广州华多网络科技有限公司 | 一种缓存数据处理方法以及装置 |
CN104978154A (zh) * | 2015-07-27 | 2015-10-14 | 武汉天喻信息产业股份有限公司 | 一种基于缓存操作的flash快速读写方法及*** |
CN105718291B (zh) * | 2016-01-25 | 2020-07-07 | 山东蓝创网络技术有限公司 | 一种混合桌面应用的多级缓存加速方法 |
CN106372109A (zh) * | 2016-08-19 | 2017-02-01 | ***股份有限公司 | 互联网资源文件缓存方法及装置 |
CN106570134A (zh) * | 2016-10-27 | 2017-04-19 | 西安合众思壮导航技术有限公司 | 一种文件组织方法和装置 |
CN106776368B (zh) * | 2016-11-29 | 2021-02-05 | 苏州浪潮智能科技有限公司 | 一种数据读取时的缓存管理方法、装置及*** |
CN108182187A (zh) * | 2016-12-08 | 2018-06-19 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
CN106599247B (zh) * | 2016-12-19 | 2020-04-17 | 北京奇虎科技有限公司 | LSM-tree结构中数据文件的合并方法及装置 |
CN107463508A (zh) * | 2017-07-19 | 2017-12-12 | 北京微影时代科技有限公司 | 脚本缓存清除方法、装置、电子设备及存储介质 |
CN110597452A (zh) * | 2018-06-13 | 2019-12-20 | ***通信有限公司研究院 | 存储***的数据处理方法及装置、存储服务器及存储介质 |
CN108846141B (zh) * | 2018-07-11 | 2022-05-24 | 中国建设银行股份有限公司 | 一种离线缓存加载方法及装置 |
CN108965910B (zh) * | 2018-08-09 | 2022-05-10 | 网宿科技股份有限公司 | 一种视频缓存方法及播放器 |
CN109815425A (zh) * | 2018-12-14 | 2019-05-28 | 平安科技(深圳)有限公司 | 缓存数据处理方法、装置、计算机设备和存储介质 |
CN109361714B (zh) * | 2018-12-18 | 2021-11-16 | ***通信集团江苏有限公司 | 用户登录鉴权方法、装置、设备及计算机存储介质 |
CN110109958A (zh) * | 2019-04-19 | 2019-08-09 | 深圳前海微众银行股份有限公司 | 缓存处理方法、装置、设备及计算机可读存储介质 |
CN112734982A (zh) * | 2021-01-15 | 2021-04-30 | 北京小马慧行科技有限公司 | 无人车驾驶行为数据的存储方法和*** |
CN116599973B (zh) * | 2023-07-11 | 2023-09-26 | 天津卓朗昆仑云软件技术有限公司 | 基于bt服务加速组件的数据传输方法和装置 |
-
2006
- 2006-12-26 CN CNB2006101671808A patent/CN100530186C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101075241A (zh) | 2007-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100530186C (zh) | 缓存处理方法以及缓存处理*** | |
US10958752B2 (en) | Providing access to managed content | |
US9509748B2 (en) | Efficient storage and retrieval of resources for rendering structured documents | |
US8650164B2 (en) | Efficient storage and retrieval for large number of data objects | |
CN100456311C (zh) | 用于实施基于内容的文件***安全性的***和方法 | |
CN103179185B (zh) | 一种分布式文件***客户端缓存中文件创建方法及其*** | |
US10061852B1 (en) | Transparent proxy tunnel caching for database access | |
US6952730B1 (en) | System and method for efficient filtering of data set addresses in a web crawler | |
CN102985921B (zh) | 在具有电子资源数据库的客户端装置中高速缓存电子文档资源 | |
CN108920600B (zh) | 一种基于数据关联性的分布式文件***元数据预取方法 | |
CN104679898A (zh) | 一种大数据访问方法 | |
CN104778270A (zh) | 一种用于多文件的存储方法 | |
US9154522B2 (en) | Network security identification method, security detection server, and client and system therefor | |
CN103902660B (zh) | 机群文件***中通过readdir++预取文件布局的***及其方法 | |
CN103123630A (zh) | 一种获取网页内容的方法、***以及移动终端和服务器 | |
US20130318211A1 (en) | Asset streaming and delivery | |
CN104021137B (zh) | 一种基于目录授权的客户端本地开闭文件的方法及*** | |
US7249219B1 (en) | Method and apparatus to improve buffer cache hit rate | |
CN105701233B (zh) | 一种优化服务器缓存管理的方法 | |
CN103631914A (zh) | 一种海量互联网内容离线浏览的方法及*** | |
US9178931B2 (en) | Method and system for accessing data by a client from a server | |
CN107015978A (zh) | 一种网页资源处理方法以及装置 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
CN109002495A (zh) | 数据存储方法和装置 | |
US8862694B2 (en) | If-none-match for aggregated page distribution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230921 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |