我们使用清漆4进行缓存和处理ESI。对于返回5XX后端错误的ESI请求,我们返回一个空的合成响应。
该空响应应缓存几秒钟,因为当前对同一ESI的每个后续请求都会再次命中后端。只要5XX响应的原因很昂贵,就会对我们的后端产生很大的负担。
sub vcl_backend_error {
....
if (isAnESI && beresp.status >= 500 && beresp.status <= 599) {
synthetic({""});
return(deliver);
}
}
我们尝试在响应中添加Retry-After
标头,但这不起作用。
set beresp.http.Retry-After = "5";