Как не кэшировать 500 внутренних ошибок сервера в Varnish
Я не могу понять, для жизни меня, как заставить лак игнорировать кэширование 500 внутренних ошибок сервера. В принципе, если кто-то попадает в лак и возвращается ошибка внутреннего сервера 500, я хочу, чтобы лак не кэшировал эту страницу (установить 0s ttl/льготный период?). Я использую лак 3.0.3, и вот мой VCL. По умолчанию я хочу кэшировать страницы в течение 30 дней.
sub vcl_fetch {
# Set 30-day TTL
set beresp.ttl = 2592000 s;
set beresp.grace = 15d; /* The max amount of time to keep object in cache */
if (beresp.status == 301 || beresp.status == 302) {
return (hit_for_pass);
}
# Serve pages from the cache should we get a sudden error and re-check in one minute
if (beresp.status >= 500) {
set beresp.grace = 1s;
set beresp.ttl = 1s;
return (hit_for_pass);
}
# Unset the "etag" header (suggested)
unset beresp.http.etag;
return(deliver);
}
Итак, на английском языке: если возвращается внутренний сервер 500... X-CACHE должен показывать промах. Когда я освежаю страница, если это все еще внутренний сервер 500, то он должен снова показать промах. Если страница успешно доставлена,она должна показать попадание.
1 ответов
по умолчанию лак будет кэшировать только следующие коды состояния[1]:
- 200: OK
- 203: Неавторизованная Информация
- 300: Несколько Вариантов
- 301: Переехал Окончательно
- 302: Временно Перемещено
- 307: Временное Перенаправление
- 410: ушли
- 404: Не Найдено
обратите внимание, что при первой успешной доставке страницы вы все равно получите Мисс!--1-->
[1] http://book.varnish-software.com/3.0/VCL_Basics.html#the-initial-value-of-beresp-ttl