Jugando con Varnish

Por fin he tenido un poco de tiempo para jugar con la configuración del Varnish. Un 30% mas o menos de ficheros servidos desde el Caché. No esta nada mal.

Después de algunas pruebas infructuosas la configuración ha quedado así …

en /etc/varnish/default.vcl

include “/etc/varnish/cachear-static.vcl”;

y luego en ese fichero…

sub vcl_fetch
{

if (req.url ~ “http://static*”)
{
# Eliminamos las cookies que pueda devolver el backend HTTP
unset beresp.http.Set-Cookie;

# Indicamos que se cachee durante 7 dias:
set beresp.ttl = 7d;

return(deliver);
}

}

sub vcl_recv {

if (req.request == “GET” && req.url ~ “\.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|wmf)$”) {
return(lookup);
}

if (req.request == “GET” && req.url ~ “\.(css|html)$”) {
return(lookup);
}
}

Lo que hace … Si algo va hacia una url del tipo static* (las imágenes que hay que cachear), le cambia el tiempo de vida a 7 dias (para que se quede en el cache).

Y después, si lo que queremos bajar es una imagen, un fichero css (que no cambian) o una pagina html … intenta tirar siempre de cache.

Para probarlo … por ejemplo.

curl -s -I -H “Host:static.xxx.xxx” “http://static.xxx.xxx/foto.jpg”

Y devolvera algo como esto …

Server: nginx
Content-Type: text/html
Vary: Accept-Encoding
Date: Thu, 27 Dec 2012 20:44:25 GMT
X-Varnish: 883807727
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS <- NO esta en el cache X-Cache-Hits: 0Si lo vuelvo a hacer la respuesta cambia ...HTTP/1.1 200 OK Server: nginx Content-Type: image/jpeg Last-Modified: Wed, 26 Dec 2012 20:10:21 GMT Content-Length: 160101 Accept-Ranges: bytes Date: Thu, 27 Dec 2012 20:45:27 GMT X-Varnish: 883807740 883807701 Age: 320 Via: 1.1 varnish Connection: keep-alive X-Cache: HIT <- Ahora si que se esta devolviendo en el cache X-Cache-Hits: 1Tengo que leer con detenimiento lo del Age. No acabo de entenderlo bien.

Con esta configuración simple … empieza a cachear como un loco … :).

Comments are closed.