Non riesco a capire, per la vita di me, come ottenere la vernice per ignorare la memorizzazione nella cache di 500 errori interni del server. Fondamentalmente, se qualcuno colpisce la vernice e viene restituito un errore del server interno di 500, voglio che la vernice non memorizzi nella cache quella pagina (imposta un periodo ttl/tolleranza 0s?). Sto usando vernice 3.0.3 e qui c'è il mio VCL. Per impostazione predefinita, voglio memorizzare le pagine in cache per 30 giorni.Come NON memorizzare nella cache 500 errori interni del server in Varnish
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);
}
Così, in inglese: se viene restituito un server interno 500 ... l'X-CACHE dovrebbe mostrare un MISS. Quando aggiorno la pagina, se è ancora 500 server interni, dovrebbe nuovamente mostrare un MISS. Se la pagina viene consegnata correttamente, dovrebbe mostrare un HIT.
Hm ... lo faccio non capisco perché Varnish memorizza nella cache l'errore 404. Siamo stati bruciati da questo: la risorsa viene sottoposta a backup, ma l'utente non la vede. – Leonid
@Leonid, Il 404 viene generalmente memorizzato nella cache da proxy inversi poiché non indica un malfunzionamento del server upstream: piuttosto la richiesta è stata ricevuta e gestita correttamente, ma la risorsa richiesta non esiste. – mickeybob