Как не кэшировать 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