在清漆子例程中,当您对响应对象具有写访问权限时,是否有方法可以判断该对象是直接传递到后端,还是首先通过缓存查找发送?现在,我正忙于添加应用程序逻辑,以接收一些标头,然后将其发送回,这些标头可以由清漆读取,但我更希望清漆的行为更独立于应用程序。
我想要的是下面这样的东西,尽管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为您提供了答案。