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



在清漆子例程中,当您对响应对象具有写访问权限时,是否有方法可以判断该对象是直接传递到后端,还是首先通过缓存查找发送?现在,我正忙于添加应用程序逻辑,以接收一些标头,然后将其发送回,这些标头可以由清漆读取,但我更希望清漆的行为更独立于应用程序。

我想要的是下面这样的东西,尽管I//DSomeStuff的方法不一定是交付。

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
 }    
}

是的,有多种方法。您可以挂接在vcl_hash{}中,并在req.中添加一些自定义标头,也可以在vcl_pass{}中执行同样的操作,也可以先在vcl_recv{}中执行一步,或在vcl_hit{}vcl_miss{}中执行一步骤(注意,hit-for-pass也调用vcl_pass{}

查找处理状态以使图片更清晰。

在最近的清漆缓存版本中,bereq.uncacheable为您提供了答案。

最新更新