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 … :).