一种可配置的缓存系统和方法,包括前端调度器、前端缓存服务器,所述前端调度器中配置有相关的location规则和嵌入式脚本Lua语言,本发明专利技术在前端调度器中通过url重写技术和自定义header域值,排除可能干扰缓存的因素,最大程度保障缓存的命中率。确保不同URL按统一逻辑缓存,同时确保同一URL为登陆用户提供各自独立的缓存逻辑。
【技术实现步骤摘要】
本专利技术涉及互联网领域,尤其涉及一种前端缓存系统和方法。
技术介绍
缓存技术在计算机系统中无处不在,从计算机到各种路由设备、从软件实现到硬件实现,设计良好的缓存系统,可以大大提高系统的响应速度,提高了用户体验。互联网应用中,缓存系统又分为memcache、redis等后端缓存,以及Squid、Varnish、Nginx、ApacheTraffic Server等前端缓存系统。不论前端缓存还是后端缓存,适应业务需求,提尚缓存命中率是最重要的追求。前端缓存服务,在此指使用⑶N技术,利用Squid、Varnish、Nginx、Apache TrafficServer等做前端缓冲,提供HTTP协议所描述的缓存服务。HTTP协议详细定义了前端缓存服务、以及浏览器本地缓存的支持细节,缓存与否受url、多个http header域值影响。现实业务场景中,浏览器、操作系统、url重定向、get参数、cookie值等众多因素变化,均可能导致缓存无效。
技术实现思路
本专利技术的目的是为了解决现有技术的不足,提供。本专利技术的第一个目的是提供一种可配置的缓存系统,包括前端调度器、前端缓存服务器,所述前端调度器中配置有相关的locat1n规则和嵌入式脚本Lua语言,所述前端调度器通过判断访问请求,根据url是否匹配自定义的header参数作相关判断,并将最终执行完的参数传递给前端缓存服务器。本专利技术的第二个目的是提供一种可配置的缓存方法,通过上述的可配置的缓存系统实现,包括至少以下步骤: (O前端调度器转发请求,判断此次请求,并确保只匹配GET请求; (2)前端调度器检测请求参数,通过url重写,消除无关逻辑的参数,确保请求中带有无关逻辑的参数都命中同一个缓存结果; (3)前端调度器检测此次请求的cookie内容,提取与执行逻辑相关的cookie值; (4)前端调度器检测此次请求的其他header内容,提取与执行逻辑相关的域值,并把域值传递给一个配置的变量flang ; (5)前端调度器判断变量flang是否匹配预设的值,如果匹配,就把值传递都给默认的变量deflang,生成正确的header域值; (6)前端调度器把最终的header域值传递给前端缓存服务器。上述的一种可配置的缓存方法,其中于,所述步骤(2)中,通过前端代理层中的locat1n规则,判断请求参数,若可缓存,则进行url重写。上述的一种可配置的缓存系统,其中,所述前端调度器采用Nginx代理服务器。综上所述,由于采用上述技术方案,本专利技术在前端调度器中通过url重写技术和自定义header域值,排除可能干扰缓存的因素,最大程度保障缓存的命中率。确保不同URL按统一逻辑缓存,同时确保同一 URL为登陆用户提供各自独立的缓存逻辑。【附图说明】图1是本专利技术的流程图。【具体实施方式】下面结合附图对本专利技术的【具体实施方式】作详细介绍。实施例1 请参见图1,本专利技术的一种可配置的缓存系统,包括前端调度器、前端缓存服务器,前端调度器,在此指广泛应用于Web开发中的七层应用代理软件,包括nginx、haproxy等都是非常高效的前端调度器,本专利技术优选nginx。在前端调度器中配置有相关的locat1n规则和嵌入式脚本Lua语言,本专利技术借助嵌入式脚本Lua语言编程,在前端调度器中通过url重写技术和自定义header域值,排除可能干扰缓存的因素,最大程度保障缓存的命中率。本专利技术的可配置的缓存方法,通过上述的可配置的缓存系统实现,包括至少以下步骤: (1)前端调度器转发请求,判断此次请求,通过^111681:_1]16〖110(1 = GET参数使得本身只匹配GET请求。(2)前端调度器检测请求参数,通过前端代理层中的locat1n规则,判断请求参数,若可缓存,则进行url重写。通过url重写,消除无关逻辑的参数,确保请求中带有无关逻辑的参数都命中同一个缓存结果。例如,“rewrite /dem0.php?test=abc /demo, php last; ”,不例中参数 test=abc与执行逻辑无关,不影响最终结果,通过此重写,确保'/dem0.php?test=abc'与“/demo,php”命中冋一缓存结果。(3)前端调度器检测此次请求的cookie内容,提取与执行逻辑相关的cookie值。例如,用户cookie中的语言版本检查,设定一个默认值的变量deflang,如果cookie中存在其他值,就把变量的内容改成对应的值。set $deflang en;If ( $cookie_defIang ) { set $defIang $cookie_defIang; }o(4)前端调度器检测此次请求的其他header内容,提取与执行逻辑相关的域值,并把域值传递给一个配置的变量flang。例如,用户浏览器语言环境的检查: set_by_lua $fIang ^local I = ngx.req.get_headers()return I o(5)前端调度器判断变量flang是否匹配预设的值,如果匹配,就把值传递都给默认的变量deflang,生成正确的header域值;并通过nginx的Fastcig_param把默认的变量传递给前端缓存服务器。例如,针对语言版本检测: if ( $fIang ~ ‘zh’ ) { set $defIang zh; }Fastcgi_param HTTP_VARY_DEFLANG Sdeflang0(6)前端调度器把最终的header域值传递给前端缓存服务器。经过上述步骤(I) ~ (6),确保不同URL按统一逻辑缓存,同时确保同一 URL为登陆用户提供各自独立的缓存逻辑。实施例2 以登陆用户语言版本区分为示例,本专利技术分为代理服务配置逻辑、和响应匹配逻辑构成。代理服务配置逻辑示例如下: rewrite /dem0.php?test=abc /demo, php last; #使用内部跳转达到修改url 的目的 set $deflang en;# 默认值set_by_lua $fIang ' local I = ngx.req.get_headers () return I > ■ jif ( Sflang ~ ’zh’){#浏览器逻辑一请求头Accept-Language set $defIang zh; }if ( $cookie—deflang ) {#cookie 逻辑一deflang set $defIang $cookie—deflang; }fastcgi—param HTTP—VARY—DEFLANG $deflang; # 生成请求头 Vary-DefIang。响应匹配逻辑如下: header (J Vary: Vary-Deflang O。以上示例只展示了一个特定url的匹配与重写,以及针对用户语言版本的检测区分,通过简单扩展,可以进一步应用于任何Iirl匹配重写过程,以及其他参数的检测实现。以上所述的实施例仅用于说明本专利的技术思想及特点,其目的在于使本领域内的技术人员能够了解本专利的内容并据以实施,不能仅以本实施例来限定本专利的专利范围,即凡依本专利本文档来自技高网...
【技术保护点】
一种可配置的缓存系统,其特征在于,包括前端调度器、前端缓存服务器,所述前端调度器中配置有相关的location规则和嵌入式脚本Lua语言,所述前端调度器通过判断访问请求,根据url是否匹配自定义的header参数作相关判断,并将最终执行完的参数传递给前端缓存服务器。
【技术特征摘要】
【专利技术属性】
技术研发人员:文军,
申请(专利权)人:摩贝上海生物科技有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。