2013-05-29 4 views
9

Я не могу понять, для жизни меня, как получить лак, чтобы игнорировать кеширование 500 внутренних ошибок сервера. В принципе, если кто-то ударяет лак и возвращается ошибка внутреннего внутреннего сервера, я хочу, чтобы лак не кэшировал эту страницу (установите 0s ttl/grace period?). Я использую лак 3.0.3, и вот мой VCL. По умолчанию я хочу кэшировать страницы в течение 30 дней.Как НЕ кэшировать 500 внутренних ошибок сервера в лаке

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 должен показать MISS. Когда я обновляю страницу, если это еще 500 внутренних серверов, тогда она должна снова показать MISS. Если страница успешно доставлена, она должна отображать HIT.

ответ

14

По умолчанию Varnish будет кэшировать только следующие коды состояния [1]:

  • 200: OK
  • 203: Неавторитетная Информация
  • 300: Множественный выбор
  • 301: Перемещенные Постоянно
  • 302: Временно перемещено
  • 307: Temporary Redirect
  • 410: Унесенные
  • 404: Не найдено

Обратите внимание, что первый раз, когда страница успешно доставленных вы все равно получите MISS

[1] http://book.varnish-software.com/3.0/VCL_Basics.html#the-initial-value-of-beresp-ttl

+1

Хм ... Я не понимают, почему Лак будет кэшировать ошибку 404. Мы были сожжены этим - ресурс восстанавливается, но пользователь этого не видит. – Leonid

+2

@Leonid, 404, как правило, кэшируется обратными прокси-серверами, поскольку он не указывает на неисправность восходящего сервера: скорее, запрос был получен и обработан правильно, но запрошенный ресурс не существует. – mickeybob

Смежные вопросы