当出现错误500时,在清漆上增加宽限期

时间:2015-06-11 10:16:43

标签: caching varnish varnish-vcl

当我从后端收到错误500时,我使用以下代码来增加清漆中的宽限期:

# If backend returns 500 error then boost the cache grace period...
if (beresp.status == 500) {
   set beresp.grace = 1m;
return (retry);
}

但我只想提高宽限期,当我有另一个缓存时,如果我没有缓存,我只想缓存错误。

缓存的后端响应配置“vcl_backend_response”:

# Cache 1 day
if(bereq.url ~ "^/"){
    set beresp.http.X-cachePath = beresp.http.X-cachePath +  "1d::";
    unset beresp.http.set-cookie;
    unset beresp.http.Cache-Control;
    set beresp.ttl = 1d;
    set beresp.grace = 1h;
    return (deliver);
}

这可以用清漆4吗?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

我认为你要找的是Saint ModeHere就是一个例子。

Saint Mode的功能与Grace模式类似,但在不同情况下,Grace模式在后端生病或需要太长时间响应时起作用,当不喜欢时,Saint Mode会起作用后端响应。

在这种情况下,500错误是您不喜欢的响应。

在版本4中将圣模从Varnish核心中移除是一个很小的问题。尽管不像在Varnish 3中那么简单,here是Varnish 4中圣模的VMOD