En un mundo digital cada vez más exigente, las páginas web lentas son cada vez más propensas a perder visitantes. Este abandono se traduce en una pérdida de ventas y una disminución de los ingresos. Pero hay una solución: Varnish Cache, un software avanzado de almacenamiento en caché que acelera la velocidad de su sitio, permitiendo que las solicitudes HTTP se respondan de forma rápida y eficiente.
Tabla de contenidos
Con la creciente cantidad de tráfico que experimentan muchos sitios web, su rendimiento puede verse comprometido. Cuantas más solicitudes tenga que gestionar un servidor, más tiempo necesitará para responder. Esta situación puede causar una disminución considerable en el tiempo de carga de la página. Pero gracias a softwares de almacenamiento en caché como Varnish Cache, las páginas web pueden mejorar notablemente su rendimiento y experiencia del usuario.
Varnish Cache es un sistema que almacena datos procesados previamente en la memoria caché. Cuando se solicitan estos datos en el futuro, se entregan mucho más rápido que si se tuviera que recurrir constantemente al servidor.
El origen de Varnish Cache
La historia de Varnish Cache se remonta a 2005, cuando VG Multimedia, un periódico digital noruego, se encontraba lidiando con una gran carga de tráfico en su sitio web. El equipo de desarrollo del periódico, junto con la empresa noruega de Linux, Linpro, trabajaron juntos para crear una solución que pudiera reducir la cantidad de servidores necesarios y optimizar la velocidad de las páginas.
En septiembre de 2006, se lanzó al mercado la primera versión de Varnish Cache como software de código abierto. En dos años, este acelerador había logrado reducir el tiempo de respuesta en un 95%, pasando de 200 a 10 milisegundos. Esta impresionante eficiencia atrajo a muchas organizaciones, incluyendo a gigantes como Facebook, que comenzaron a implementarlo en sus páginas.
La popularidad y el éxito de Varnish Cache llevaron a la fundación de Varnish Software en 2010. Desde entonces, la empresa ha continuado desarrollando y mejorando el software. Hoy en día, Varnish Cache puede manejar hasta 100.000 solicitudes por segundo y ha reducido aún más el tiempo de respuesta a 100 microsegundos.
El funcionamiento de Varnish Cache
Varnish Cache funciona como un acelerador de páginas web, reduciendo la carga en el servidor al responder a las solicitudes HTTP con los recursos almacenados en la memoria caché. Cuando un usuario visita un sitio, el servidor procesa la solicitud y Varnish Cache la almacena junto con los contenidos correspondientes. Cuando otro usuario realiza una solicitud similar en el futuro, los datos se cargan rápidamente desde Varnish Cache, sin molestar al servidor. De esta manera, Varnish Cache optimiza la experiencia del usuario, permitiendo que una página web soporte un mayor número de visitas simultáneas.
Varnish Cache 7.3.0: Nuevas características y cambios
La versión 7.3.0 de Varnish Cache viene con una serie de cambios significativos y mejoras, a continuación, se detallan los más relevantes:
varnishd:
- Se ha añadido un nuevo parámetro,
transit_buffer
, deshabilitado por defecto, para limitar la cantidad de almacenamiento utilizado para respuestas no almacenables en caché. Esto es útil en situaciones donde los clientes lentos pueden consumir grandes objetos pero no almacenables en caché, para evitar que llenen el almacenamiento demasiado rápido a expensas de los recursos almacenables en caché. - Los códigos de estado de respuesta distintos de 200 y 204 ahora se consideran errores para los fragmentos ESI. Anteriormente, cualquier objeto ESI:include sería incluido, sin importar el estado de este, ahora solo los objetos con estado 200 y 204 serán incluidos, y cualquier otro código de estado fallará en la solicitud ESI principal.
Cambios en VCL:
- Las variables
req.xid
,bereq.xid
ysess.xid
ahora son enteros en lugar de cadenas, pero deben seguir siendo utilizables sin un cambio de VCL en un contexto de cadena. - Los backends tienen un nuevo atributo
.via
que opcionalmente hace referencia a otro backend. Los backends pueden conectarse a sockets abstractos en Linux utilizando la misma sintaxis que la opción de línea de comandosvarnishd -a
. - Las pruebas tienen un nuevo atributo
.expect_close
que por defecto es verdadero, coincidiendo con el comportamiento actual. Configurarlo en falso diferirá las comprobaciones finales hasta después de que la prueba se agote.
Cambios para desarrolladores y autores de VMOD:
- Hay una nueva macro de conveniencia
WS_TASK_ALLOC_OBJ()
para asignar objetos desde el espacio de trabajo de las tareas actuales. - La macro
NO_VXID
puede ser usada para registrar explícitamente los registros fuera de una transacción. - Las implementaciones de backend personalizadas ahora están a cargo de imprimir encabezados, lo que evita duplicados cuando una implementación personalizada se basaba en
http_*()
que también registraría los encabezados que se están configurando.
Este es un resumen de algunos de los cambios más significativos en la versión 7.3.0 de Varnish Cache. Para una descripción detallada de todos los cambios, consulte el registro de cambios oficial.
VCL: El lenguaje de configuración de Varnish Cache
Varnish Configuration Language, conocido como VCL, es un lenguaje de programación específico de dominio diseñado para ser utilizado en Varnish Cache. Este lenguaje es altamente flexible y permite a los desarrolladores personalizar cómo Varnish maneja cada solicitud y respuesta HTTP.
El VCL tiene una sintaxis similar a la de C y es utilizado para escribir rutinas que determinan cómo se manejan las solicitudes y respuestas. Algunas de las rutinas más comunes incluyen vcl_recv
(que se ejecuta cuando Varnish recibe una solicitud del cliente) y vcl_deliver
(que se ejecuta antes de que Varnish envíe una respuesta al cliente).
Cada rutina define un conjunto de reglas que se aplican a cada solicitud o respuesta, permitiendo a los desarrolladores definir cómo se almacenan en caché los datos, cuánto tiempo se retienen, y cómo se manejan las excepciones. Por ejemplo, un desarrollador podría escribir una rutina vcl_recv
que verifica si una página ha sido actualizada recientemente. Si es así, Varnish podría estar configurado para recuperar una nueva versión de la página del servidor. Si no, podría utilizar la versión almacenada en la caché.
Un aspecto importante del VCL es su capacidad para manejar múltiples backends o servidores de origen. Esto significa que Varnish puede balancear la carga de las solicitudes entre varios servidores, redirigiendo las solicitudes a diferentes backends según sea necesario.
El VCL también se utiliza para implementar medidas de seguridad adicionales. Por ejemplo, se pueden escribir rutinas que comprueben las cabeceras de las solicitudes HTTP para detectar y bloquear posibles ataques.
En resumen, el VCL proporciona un alto nivel de control sobre el comportamiento de Varnish, permitiendo a los desarrolladores optimizar la forma en que se gestiona la caché. Aunque la escritura de scripts VCL puede ser compleja, especialmente para los que son nuevos en el software, la flexibilidad y potencia que ofrece este lenguaje hacen que valga la pena el esfuerzo de aprenderlo.