如何判断来自后端的响应是否源自Varnish缓存查找

时间:2015-03-05 18:04:28

标签: varnish varnish-vcl

在varnish子例程中,当您具有对响应对象的写访问权时,是否有一种方法可以告诉对象是直接传递给后端,还是首先通过缓存查找发送?现在我正在摆弄添加应用程序逻辑以接收一些标头,然后将其发送回来,这可以通过清漆读取,但我更希望清漆行为与应用程序无关。

我正在寻找的东西将如下所示,尽管我// DoSomeStuff的方法不一定是交付。

sub vcl_recv {  
 if( req.url ~ "^/something/ignored.*$" ) {
   return ( pass );
 }
 else {  
    unset req.http.Cookie;
    return( hash );
  }
}
sub vcl_deliver {
 if( resp.lookup == 1 ) {
   //Do Some Stuff
 }    
}

1 个答案:

答案 0 :(得分:0)

是的,有多种方式。您可以在vcl_hash{}中加入并在req.中添加一些自定义标题,您可以在vcl_pass{}中执行相同操作,您可以在vcl_recv{}之前执行此操作,或者在vcl_hit{}vcl_miss{}中加注(请注意,hit-for-pass也会调用vcl_pass{}

查看processing states以使您的照片更清晰。