用于优化web缓存的方法及系统的利记博彩app
【专利摘要】本发明提供一种用于优化WEB缓存的方法及系统,其特征在于,该方法包括:对接收到的Range请求对应的完整文件进行缓存检查,当存在所述完整文件的缓存时,根据所述完整文件的缓存对所述Range请求进行响应;当不存在所述完整文件的缓存时,根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理。通过本发明的方法及系统,能够有效减少Range请求时与源服务器交互的次数和缓存无效Range文件的数量,提高Range请求的命中率,优化WEB缓存的效率。
【专利说明】
用于优化WEB缓存的方法及系统
技术领域
[0001]本发明实施例涉及WEB缓存技术领域,尤其涉及一种用于优化WEB缓存的方法和用于优化WEB缓存的系统。
【背景技术】
[0002]WEB缓存(Web Cache)是基于HTTP协议的缓存系统,系统主要功能是缓存静态资源,在接到用户访问请求时,判断缓存内是否有用户请求的资源,如果有则直接返回资源给用户,否则代理用户向源站(即源服务器站点)请求该资源,再返回给用户,并判断该资源是否能够缓存,若能则对其进行缓存。引入WEB缓存系统能够起到以下三个方面的作用:
[0003]1、减少源站访问压力;
[0004]2、降低源站吐出带宽,缓解骨干网带宽压力;
[0005]3、由于缓存系统往往部署在离用户较近的地方,因此还能起到提高访问速度、优化用户体验的效果。
[0006]基于WEB缓存的作用,在视频的访问中同样也需要进行WEB缓存。现有技术中,当客户用播放器播放视频时,浏览器向视频服务器发送一个Range请求(例如1000-2000字节),当服务器接收到后,根据该请求找到目标文件的1000-2000字节以HTTP请求的形式反馈给客户端(此时,HTTP请求的状态码是206)。同时,WEB缓存会将该视频文件的1000-2000字节缓存下来,以方便客户后续进一步的访问。
[0007]但是,由于视频为流媒体,所以用户可以请求一个视频的任意的时段(具体的,通过拖拽播放器的进度条进行选择)。这就导致每次客户请求的都是不同Range的视频,WEB缓存中每一次存储的也是不同字节的视频,并且以前存储的缓存也不会为客户的访问带来多大的便利(因为客户每一次请求的时间段都是随机的,因而命中率不高),这就使得缓存在视频播放中没有了实际的意义。同时,还会导致没用的缓存内容占用不必要的缓存空间,对WEB缓存极不友好。
【发明内容】
[0008]为了解决现有技术中浏览器进行随机的Range请求时,WEB缓存中每次都存储不同字节的内容,因而命中率不高,不利于有效发挥WEB缓存的作用,而且命中率不高的缓存内容还会占用巨大的缓存空间,造成WEB缓存的资源浪费,对WEB缓存极不友好的问题,本发明实施例一方面提供了一种用于优化WEB缓存的方法,其特征在于,包括:
[0009]WEB缓存服务器对接收到的Range请求对应的完整文件进行缓存检查,
[0010]当存在所述完整文件的缓存时,
[0011]根据所述完整文件的缓存对所述Range请求进行响应;
[0012]当不存在所述完整文件的缓存时,
[0013]根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理。
[0014]本发明实施例另一方面提供一种用于优化WEB缓存的系统,其特征在于,所述系统包括:
[0015]缓存响应模块,用于对接收到的Range请求对应的完整文件进行缓存检查,当存在所述完整文件的缓存时,根据所述完整文件的缓存对所述Range请求进行响应,当不存在所述完整文件的缓存时,通过源响应模块进行响应;和
[0016]源响应模块,用于根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理。
[0017]本发明实施例提供的用于优化WEB缓存的方法及系统,通过将在WEB缓存中没有缓存Range请求的完整文件时,将Range请求分为两次HTTP请求,通过在没有缓存时与源服务器交互获取响应和缓存信息,在有缓存时通过缓存响应Range请求,实现了在WEB缓存中通过缓存的完整文件响应针对同一文件的Range请求,提高了 Range请求的命中率。并且,通过缓存完整文件,WEB缓存只需获取完整文件进行缓存,不用重复缓存针对同一文件的不同字节范围的Range文件,提高了 WEB缓存的空间利用率,优化了 WEB缓存的效率。
【附图说明】
[0018]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为本发明中用于优化WEB缓存的方法的实施例流程图;
[0020]图2为本发明中用于优化WEB缓存的方法的实施例流程图;
[0021]图3为本发明中用于优化WEB缓存的系统的框架结构的示意图。
【具体实施方式】
[0022]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023]图1示意性地显示了根据本发明的一种实施方式的用于优化WEB缓存的方法。如图1所示,该方法包括:
[0024]步骤SlOl:对接收到的Range请求对应的完整文件进行缓存检查,判断缓存中是否存在对应的完整文件。
[0025]当WEB缓存服务器接收到客户端带有Range的访问请求后,首先检查本地是否存在该请求对应的完整文件的资源,如果存在则进行步骤S102,否则进行步骤S103。
[0026]服务器对Range请求的判断,是通过请求头中的range:bytes字段来判断是否做Range请求的。如果这个字段存在且值有效(如不超过完整文件的范围等),则只向客户端发回请求的字节范围的文件内容,此时,对Range请求的响应状态码为206,表示返回的是Range响应。
[0027]步骤S102:根据缓存的完整文件进行响应。
[0028]对Range请求进行解析,根据Range请求头中的range:bytes的字段值确定请求的字节范围,如range:bytes = 1000-2000表示请求的字节范围是1000-2000字节的内容。按照请求头中指定的字节范围,使用缓存的完整文件提取相应字节范围的资源内容,返回给客户端,以完成对客户端的Range请求进行响应。
[0029]步骤S103:将Range请求转发给源服务器进行响应。
[0030]当WEB缓存中没有该请求对应的完整文件时,直接将客户端发送来的Range请求转发给源服务器(即提供原始文件的WEB服务器),根据源服务器返回的内容,直接将源服务器返回的针对该Range请求的响应内容全部直接发送给客户端,以对客户端的Range请求进行响应。例如,WEB缓存接收到的Range请求的内容如下:
[0031]GET/a.jpg HTTP/1.1
[0032]Connect1n:close
[0033]Host:www.letv.com
[0034]Range: bytes = 0-100
[0035]以上内容表示该Range请求要请求url为www.letv.com的a.jpg文件资源的0-100字节的内容。WEB缓存接收到该请求后,就直接将该Range请求转发给源服务器。源服务器根据接收到的Range请求进行响应。如针对以上的Range请求,返回如下的响应内容:
[0036]HTTP/1.1206Partial Content
[0037]Content-Length:101
[0038]Content-Type:1mage/jpeg
[0039]Content-Range: bytes 0-100/1000
[0040]Last-Modified:Mon, 16Feb 200916:10GMT[0041 ] Accept-Ranges: bytes
[0042]以上响应内容表示是针对Range请求的响应,响应的文件大小为101字节,响应内容的类型为jpeg格式的图片,响应内容是针对1000字节大小的完整文件的0-100字节的内容。WEB缓存接收到源服务器的响应后,将源服务器的响应内容直接发送给请求的客户端,以完成客户端对该url地址的文件的0-100字节范围的Range请求。之后,进行步骤S104的处理。
[0043]优选地,为了节省WEB缓存的空间,可以设置为在通过响应内容的Content-Range:bytes 0-100/1000字段获取到完整文件的的大小后,对完整文件的大小进行判断,当文件的大小不超过缓存阀值(如小于2G时)时,才进行步骤S104的去Range的HTTP请求,以获取完整文件进行缓存。由此,在WEB缓存的缓存区域不足够大时,优选这种方式,可以防止缓存过大的完整文件,造成WEB缓存的负担。
[0044]步骤S104:检查是否已经进行了去Range的HTTP请求。
[0045]将Range请求转发给源服务器之后,WEB缓存解析出Range请求中的要请求访问的资源的url,检查是否已经针对该url进行了去Range头的HTTP请求,即是否已经对该Range请求进行了去Range头的处理,并将去了 Range头之后生成的HTTP请求(即去Range的HTTP请求)发送给了源服务器。如果已经向源服务器发送过去Range的HTTP请求,则不做任何处理,如果没有向源服务器进行去Range的HTTP请求,则进行步骤S105。例如,针对步骤S103中列举的Range请求的例子,首先解析出请求对应的url地址为“http://www.letv.com/a.jpg”,判断针对该url的资源是否已经进行过去Range头的HTTP请求,如果已经请求过该url对应的资源,则不做任何处理,否则就要进行步骤S105的处理。进行检查的目的,是防止对同一个url的请求有多个时(如来自不同客户端的对同一资源的请求),会重复发送该url的去Range的HTTP请求给源服务器。如果不做检查,将会导致在没有获得完整文件的缓存前,只要有针对该url的Range请求,都会导致一次获取完整文件的去Range的HTTP请求,这会大大增加源服务器的压力。
[0046]步骤S105:根据Range请求生成去Range的HTTP请求,从源服务器获取完整文件。
[0047]将Range请求进行去Range头的处理以生成去Range的HTTP请求,即去除range:bytes字段及其取值,生成针对同一 url的完整文件的访问请求,发送给源服务器,以从源服务器获取该url的完整文件。例如,针对步骤S103的Range请求,进行去除Range头的处理后,生成去Range的HTTP请求如下:
[0048]GET/a.jpg HTTP/1.1
[0049]Connect1n:close
[0050]Host:www.letv.com
[0051 ] WEB缓存将该去Range的HTTP请求发送给源服务器,以获取针对www.letv.com的
a.jpg的完整文件(如由上文知本文件的大小为1000字节,即从源服务器获取整个1000字节的文件内容)。
[0052]步骤106:根据源服务器的响应,对完整文件进行预缓存。
[0053]源服务器收到去Range的HTTP请求后,由于不包含Range内容,源服务器会进行针对请求的url的完整文件的响应。如,针对以上的去Range头的HTTP请求,源服务器返回如下的响应内容:
[0054]HTTP/1.12000K
[0055]Content-Length:
[0056]Content-Type:1mage/jpeg
[0057]Content-Range:1000
[0058]Last-Modified:Mon, 16Feb 200916:10:12GMT
[0059]该内容即返回1000字节的完整文件。WEB缓存收到该响应后,解析出响应的完整文件,根据响应中的缓存指令(响应头中的Cache-Control:cache-directive的内容,如包括public、private、no-cache等,为现有技术,故不赘述。),将该完整文件存储到缓存区域。
[0060]优选地,WEB缓存对在缓存区域进行文件存储的组织方式,可以设置为按照存储单元的顺序依次顺序存储,当缓存区域的存储单元占满时,从最前端的存储单元(即最先开始存储的存储单元)开始,顺序用新的要缓存的内容覆盖旧的缓存内容,即进行顺序循环存储。这种方式,可以有效减少缓存区域的磁盘碎片。
[0061 ] 通过本发明实施例的方法,可以有效的优化WEB缓存,减少WEB缓存中对Range请求的部分文件的叠加存储和无效存储,提高WEB缓存的命中率和存储资源的利用率。
[0062]图2以服务器是WEB缓存服务器为例,示意性地显示了另一种实施方式的用于优化WEB缓存的方法。如图2所示,该方法与图1所示的方法基本相同,不同在于增加了对Range请求的请求频率的统计和判断,只有在Range请求的请求频率(如一分钟内请求的次数)达到或超过预定阀值(如五次以上)时,才向源服务器发送去Range的HTTP请求,获取完整文件进行缓存。这样,可以进一步提高对WEB缓存的缓存区域的利用率,优化WEB缓存的效率,减少无效缓存(如就只有一次请求,缓存后再也没人请求过。)。
[0063]图3示意性地显示了本发明的用于优化WEB缓存的系统的一种实施方式的框架结构。如图3所示,该系统包括缓存响应模块30和源响应模块31。缓存响应模块30设置为对接收到的Range请求,检查该请求对应的完整文件是否在本地(即当前的WEB缓存服务器)中有缓存,当存在完整文件的缓存时,根据缓存的完整文件对Range请求进行响应,当不存在完整文件的缓存时,通过源响应模块31进行响应。源响应模块31设置为将接收到的Range请求拆分为两次HTTP请求,通过拆分的HTTP请求与源服务器进行交互,并根据源服务器返回的信息,进行相应处理。具体为,源响应模块31包括原始响应单元311和预缓存单元312,源响应模块31将接收到的Range请求分为两次对源服务器的HTTP请求,第一次为源响应模块31通过原始响应单元311将Range请求直接转发至源服务器,并根据源服务器返回的信息,对Range请求进行响应。第二次为,源响应模块31通过预缓存单元312向源服务器发送完整文件请求,以获取该Range请求中的url对应的完整文件进行预缓存,以方便以后的针对该url的Range请求的缓存响应。具体为预缓存单元312首先通过预缓存请求生成组件(图未示出)判断针对该Range请求的url是否已向源服务器进行过去Range的HTTP请求,如果已经针对该url进行过去Range的HTTP请求,则不再重复进行缓存请求。如果没有对同一 url进行过去Range的HTTP请求,则通过预缓存请求生成组件(图未示出)对该Range请求进行去Range头处理生成去Range的HTTP请求。并通过预缓存文件获取组件(图未示出)将生成的去Range的HTTP请求发送至源服务器,以从源服务器获取该Range请求中的url对应的完整文件进行预缓存。通过本发明实施例的系统,WEB缓存服务器在接收到Range请求时,就不需要每次都去源服务器获取资源并缓存,只需要在第一次请求该url的Range内容时,从源服务器获取完整文件进行预缓存,之后针对该url的Range请求都通过预缓存的完整文件进行响应,提高WEB缓存的命中率和资源利用率。
[0064]如图3所示,源响应模块31中还可以包括响应控制单元313,设置为在每次收到Range请求时,对接收到的Range请求进行统计,计算Range请求的频率(如每分钟请求几次),当本地没有缓存该Range请求的完整文件时,首先判断对该url的资源的Range请求的请求频率,在请求频率达到或超过预定阀值时,才进行预缓存单元312的处理,从源服务器获取完整文件进行缓存,以进一步对WEB缓存进行优化,减少无效资源的获取和缓存量。
[0065]如图3所示,源响应模块31中还可以包括预缓存控制单元314。在预缓存单元312设置为在原始响应单元311向源服务器Range请求后,根据源服务器响应的内容,判断该Range请求对应的完整文件的大小,当完整文件的大小不超过缓存阀值时,通过预缓存单元312进行去Range的HTTP请求。由此,可以防止缓存过大的完整文件,造成WEB缓存的负担。
[0066]如图3所示,本发明实施例的系统还可以包括有缓存管理模块32,设置为根据缓存区域的存储顺序,按照由前往后依次覆盖的方式,顺序循环存储缓存文件。通过顺序循环存储的方式,可以有效减少磁盘的碎片。
[0067]本发明实施例的服务器架构中各个模块可以是软件模块也可以是硬件模块,各模块的具体处理方式与前文的方法描述相同,可相应参照,在此不再赘述。
[0068]通过本发明的系统,可以有效减少客户端Range请求时,与源服务器的交互频率和存储的Range文件的数量,能够更进一步减轻源服务器的压力,提高WEB缓存的效率和命中率。
[0069]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0070]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0071]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种用于优化WEB缓存的方法,其特征在于,包括: 对接收到的Range请求对应的完整文件进行缓存检查, -当存在所述完整文件的缓存时, 根据所述完整文件的缓存对所述Range请求进行响应; -当不存在所述完整文件的缓存时, 根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理。2.根据权利要求1所述的方法,其特征在于,所述根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理包括: 将所述Range请求作为获取Range响应的HTTP请求,直接转发至源服务器,并根据所述源服务器返回的信息,对所述Range请求进行响应; 根据所述Range请求生成用于获取完整文件的去Range的HTTP请求,并将所述去Range的HTTP请求发送至所述源服务器,根据所述源服务器返回的信息,进行缓存处理。3.根据权利要求1所述的方法,其特征在于,所述根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理包括: 将所述Range请求作为获取Range响应的HTTP请求,直接转发至源服务器,并根据所述源服务器返回的信息,对所述Range请求进行响应; 对接收到的Range请求进行统计,当所述Range请求的请求频率达到或超过预定阀值时,根据所述Range请求生成用于获取完整文件的去Range的HTTP请求,并将所述去Range的HTTP请求发送至所述源服务器,根据所述源服务器返回的信息,进行缓存处理。4.根据权利要求2或3所述的方法,其特征在于,所述根据所述Range请求生成用于获取完整文件的去Range的HTTP请求包括: 解析出所述Range请求中的url,判断是否存在针对所述url的历史去Range的HTTP请求,当不存在针对所述url的历史去Range的HTTP请求时,对所述Range请求进行去Range头操作,以生成针对所述url的去Range的HTTP请求。5.根据权利要求4所述的方法,其特征在于,所述根据所述源服务器返回的信息,进行缓存处理包括: 根据所述源服务器返回的信息,获取完整文件; 根据缓存区域的存储顺序,按照由前往后依次覆盖的方式,顺序循环存储获取的完整文件。6.一种用于优化WEB缓存的系统,其特征在于,包括: 缓存响应模块,用于对接收到的Range请求对应的完整文件进行缓存检查,当存在所述完整文件的缓存时,根据所述完整文件的缓存对所述Range请求进行响应,当不存在所述完整文件的缓存时,通过源响应模块进行响应; 和 源响应模块,用于根据所述Range请求生成用于获取Range响应的HTTP请求和用于获取完整文件的HTTP请求,以从源服务器获取返回信息,进行响应和缓存处理。7.根据权利要求6所述的系统,其特征在于,所述源响应模块包括原始响应单元和预缓存单元, 所述原始响应单元用于将所述Range请求作为获取Range响应的HTTP请求,直接转发至源服务器,并根据所述源服务器返回的信息,对所述Range请求进行响应; 所述预缓存单元用于根据所述Range请求生成用于获取完整文件的去Range的HTTP请求,并将所述去Range的HTTP请求发送至所述源服务器,根据所述源服务器返回的信息,进行缓存处理。8.根据权利要求7所述的系统,其特征在于,所述源响应模块还包括响应控制单元,用于对接收到的所述Range请求进行统计,判断对所述Range请求的请求频率,在所述请求频率达到或超过预定阀值时,进行所述预缓存单元的处理。9.根据权利要求7或8所述的系统,其特征在于,所述预缓存单元包括预缓存请求生成组件 所述预缓存请求生成组件用于解析出所述Range请求中的url,判断是否存在针对所述url的历史去Range的HTTP请求,当不存在针对所述url的历史去Range的HTTP请求时,对所述Range请求进行去Range头操作,生成针对所述url的去Range的HTTP请求。10.根据权利要求9所述的系统,其特征在于,所述系统还包括: 缓存管理模块,用于根据所述源服务器返回的信息,获取完整文件,并根据缓存区域的存储顺序,按照由前往后依次覆盖的方式,顺序循环存储获取的完整文件。
【文档编号】G06F17/30GK105893429SQ201510896048
【公开日】2016年8月24日
【申请日】2015年12月8日
【发明人】陈艳成, 赵瑞前
【申请人】乐视云计算有限公司