由于你仍然可能拥有这个不太友好的后端,你可能想要在Varnish 4.x中增加obj.ttl。像这样:
sub vcl_backend_response{
if(beresp.http.X-Response-Error == '1'){
set obj.ttl = 120s;
return (abandon);
}
return (deliver);
}
但是无法在vcl_backend_response中访问obj。 还有其他方法吗?
谢谢!
答案 0 :(得分:0)
您必须使用Grace Mode。当Varnish处于宽限模式时,它会使用一个已经过期的对象,就TTL而言。
我使用this作为基础,并将其改编为Varnish 4.0
sub vcl_recv {
#This is in case you have configured probe.
if (std.healthy(req.backend_hint)) {
set req.grace = 30s;
} else {
set req.grace = 1h;
}
}
sub vcl_backend_response {
set beresp.grace = 1h;
}
tl; dr(宽限模式链接)