Увеличьте льготный период для лака при возникновении ошибки 500

Я использую следующий код, чтобы увеличить льготный период в лаке, когда я получаю ошибку 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 ?

Спасибо за все !


person Hector Ros    schedule 11.06.2015    source источник


Ответы (1)


Я думаю, что вы ищете Saint Режим. Вот пример.

Действие Saint Mode похоже на льготный режим, но в другой ситуации: в то время как льготный режим действует, когда серверная часть не работает или слишком долго отвечает, святой режим действует, когда вам не нравится ответ серверной части.

В этом случае ошибка 500 — это ответ, который вам не нравится.

Жаль, что Saint Mode был удален из ядра Varnish в версии 4. Несмотря на то, что это не так просто, как в Varnish 3, вот VMOD для Saint Mode в Varnish 4

person Redithion    schedule 17.06.2015