Nie potrafię zrozumieć, jak uzyskać lakierowanie, aby zignorować buforowanie 500 błędów wewnętrznych serwera. Zasadniczo, jeśli ktoś uderzy lakierem i zostanie zwrócony 500 wewnętrzny błąd serwera, chcę, aby lakier nie buforował tej strony (ustawić okres 0 ttl/grace?). Używam lakieru 3.0.3 i tutaj jest mój VCL. Domyślnie chcę buforować strony przez 30 dni.W jaki sposób NIE przechowywać pamięci podręcznej 500 błędów wewnętrznego serwera w powłoce lakierniczej
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);
}
Tak, po angielsku: jeśli serwer wewnętrzny 500 zostanie zwrócony ... X-CACHE powinien pokazać MISS. Kiedy odświeżam stronę, jeśli nadal jest to 500 wewnętrznych serwerów, powinien ponownie pokazać MISS. Jeśli strona zostanie pomyślnie dostarczona, powinna pokazać HIT.
Hm ... ja nie rozumiem, dlaczego Varnish buforowałby błąd 404. Zostaliśmy przez to spaleni - zasób jest zapasowy, ale użytkownik go nie widzi. – Leonid
@Leonid, 404 jest ogólnie buforowany przez odwrotne proxy, ponieważ nie oznacza, że serwer działa nieprawidłowo: raczej żądanie zostało odebrane i obsługiwane poprawnie, ale żądany zasób nie istnieje. – mickeybob