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: 0 Si 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: 1 Tengo que leer con detenimiento lo del Age. No acabo de entenderlo bien.

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