Ir al contenido
EuroVPSEuroVPS

Varnish Cache explicado

Si es nuevo en Varnish y quiere saber más sobre esta herramienta de caché escandalosamente rápida, este artículo es para usted. Hablaremos de qué es Varnish, cómo funciona y a quién le conviene.

Por Robert Hughes

Actualizado el 22 de octubre de 20265 min de lectura
Imagen de portada: Varnish cache

Varnish se ha convertido en sinónimo de aceleración HTTP de alto rendimiento. Varnish Cache es un acelerador reverse proxy HTTP de código abierto que es excelente reduciendo la carga del servidor web en su servidor. Varnish se coloca delante del servidor web y actúa como un proxy que establece un puente entre el navegador y el servidor.

Poul-Henning Kamp, creador de Varnish
Poul-Henning Kamp (el creador de Varnish)

El proyecto Varnish fue idea del arquitecto tecnológico danés Poul-Henning Kamp. Conocido consultor de FreeBSD, Kamp fue el desarrollador principal de Varnish.

El proyecto Varnish lo inició la rama online del periódico noruego Verdens Gang. Pero el software tuvo tanto éxito que acabó escindiéndose en una empresa aparte.

Pero no se preocupe, sigue siendo software gratuito y completamente de código abierto, disponible bajo una licencia BSD de dos cláusulas. Si quiere soporte comercial, está disponible a través de Varnish Software.

Actualmente, el soporte, la gestión y el desarrollo de Varnish corren a cargo de Varnish Software.

¿Cómo funciona Varnish?

Piense en la siguiente situación. Entra en una cafetería llena y pide el café de filtro de la casa. La persona del mostrador comprueba primero si hay una cafetera recién hecha lista para servir.

Si la hay, recibe su taza de inmediato. Si no, el pedido pasa al barista para que prepare una nueva. Varnish hace el trabajo de la persona del mostrador.

Varnish se sitúa delante de su servidor web y, la primera vez que un visitante solicita una página web, Varnish recibe la petición y la pasa al servidor backend. El servidor backend procesa la petición y envía la respuesta de vuelta al navegador.

Varnish, mientras tanto, «cachea» el contenido renderizado y lo guarda en memoria RAM ultrarrápida.

Cualquier petición posterior de la misma página web se sirve directamente desde la versión cacheada (¡en memoria RAM!) sin molestar al servidor web ni a la base de datos.

¿Quién usa Varnish?

Muchos sitios de noticias y de contenidos con mucho tráfico usan Varnish.

Varnish ofrece grandes beneficios de rendimiento a sitios web con mucho contenido y mucho tráfico. Puede usarse para cachear tanto contenido estático como dinámico.

Existe la idea equivocada de que Varnish es solo para contenido estático, pero con unos pocos ajustes en el .VCL puede funcionar de maravilla incluso en sitios web dinámicos y aplicaciones móviles.

¿Por qué es tan rápido Varnish?

Si quiere poder servir miles de peticiones concurrentes por segundo sin sobrecargar su servidor web, Varnish es uno de los mejores aceleradores HTTP que existen.

image: src /blog/wp-content/uploads/2012/10/varnish-diagram.jpg (unchanged); alt: Diagrama de Varnish delante del servidor web

Dentro de la configuración de Varnish puede definir si quiere que guarde la caché en el disco duro o en la memoria RAM.

Para conseguir esa sensación instantánea de «clic y ya está», querrá que esa caché se guarde exclusivamente en su RAM.

Con una instalación de Varnish bien configurada verá un tiempo de respuesta mucho menor y una enorme reducción del uso de recursos del servidor.

¿Es difícil configurar Varnish?

RHEL y sus derivados empaquetan Varnish.

Varnish viene con una configuración básica por defecto que puede usarse tal cual para poner en marcha la aceleración HTTP con el mínimo esfuerzo. Varnish por sí mismo no termina HTTPS, así que en un sitio moderno se sitúa detrás de un terminador TLS como HAProxy o nginx.

Varnish le proporciona un archivo Varnish Configuration Language (VCL), en el que juega con los ajustes de configuración para afinar su rendimiento. El archivo VCL le dice a Varnish exactamente cómo gestionar el proceso de caché.

Cuándo y qué cachear, cuándo no cachear, y cuánto tiempo mantener el contenido cacheado en memoria.

Dominar el .VCL le da superpoderes, y le permite modificar casi cualquier aspecto de una petición y una respuesta HTTP.

Cuándo debería usar Varnish

  1. Si tiene un sitio web con mucho contenido y picos de tráfico frecuentes
  2. Varnish es excelente para servidores con una carga de base de datos pesada. Al cachear las peticiones web más comunes, su servidor MySQL puede descansar un poco.
  3. Si quiere reducir la actividad de su disco, prolongando su esperanza de vida.
  4. Si un solo servidor web y una sola base de datos deben servir a miles de visitantes concurrentes.

¿Cuándo no debería usar Varnish?

Hay muchas formas más sencillas de conseguir grandes mejoras de rendimiento, como el micro caching de NGiNX, que puede probar antes de recurrir a Varnish.

Para sitios web pequeños con menos de 1.000 páginas vistas al día, probablemente le baste con un stack LAMP optimizado o NGiNX con PHP-FPM.

Por la complejidad de adaptar el archivo .VCL a sus requisitos concretos, a veces simplemente no merece la pena usar Varnish. Conseguir que Varnish se lleve bien con el contenido dinámico es complicado. Claro, puede usar el «hole punching» de ESI para servir contenido específico por usuario, pero ¿es realmente necesario?

Revise primero la fruta madura

Antes de Varnish, haga las correcciones más baratas: optimización de imágenes, CSS y JavaScript minificados, ajuste de MySQL.

Lectura relacionada: 10 motivos por los que su sitio web carga lento (y cómo arreglarlos)

Conclusión

Configurar Varnish para que sirva el contenido correctamente y cumpla los requisitos de su organización puede ser complicado. Las reglas de expiración de la caché, el time to live, la caché por URL y los requisitos de object caching en Varnish son especialmente complejos. Como resultado, muchas consultoras han nacido de la necesidad de hacer «implementaciones de Varnish» en los entornos de los clientes.

En EuroVPS ejecutamos Varnish delante de sitios con mucho tráfico, y nuestros ingenieros pueden ayudarle a diseñar la capa de caché para el suyo.

Del archivo del blog de EuroVPS, publicado por primera vez el 17 de octubre de 2012.

Todas las notas de campo