在多个网站设置使用清漆5.1端口80,我不想缓存所有的域。这在vcl_recv中很容易做到。
if ( req.http.Host == "cache.this.domain.com" ) {
return(hash);
}
return(pass);现在,在vcl_backend_response中,我想对缓存的域进行一些处理。
当然,我可以执行if( bereq.http.Host == "cache.this.domain.com“),但是有什么方法可以知道它是来自vcl_backend_response内部的返回(散列)还是返回(Pass)调用?
我认为这是有意义的,但却找不到信息。
谢谢你的帮助。
发布于 2017-09-04 09:46:13
我真想知道为什么你一开始就需要这样的处理。
我认为没有办法直接告诉你是如何进入vcl_backend_response的。因此,我想您可以设置一个标志,然后再检查它,即:
sub vcl_recv {
if ( req.http.Host == "cache.this.domain.com" ) {
set req.http.return_type = "hash";
return(hash);
}
set req.http.return_type = "pass";
return(pass);
}
sub vcl_backend_response {
if( bereq.http.return_type == "pass" ) ...
}发布于 2017-09-04 16:08:11
除了@Daniel V.建议的临时方法之外,另一种可能适合您需要的方法是:
sub vcl_backend_response {
if (!bereq.uncacheable) {
...
}
}这让我们只对可缓存的对象执行额外的处理。
https://stackoverflow.com/questions/46027613
复制相似问题