A medida que aumentan la co­m­ple­ji­dad y el número de visitas de las páginas dinámicas, su re­n­di­mie­n­to puede verse afectado. Para disminuir la carga del servidor y co­n­tra­rre­s­tar la pérdida de velocidad, es posible im­ple­me­n­tar un proxy inverso (reverse proxy) que se encargue de responder a las so­li­ci­tu­des del servidor. Este se encarga de almacenar en caché el material so­li­ci­ta­do, que es, por lo general, contenido estático como imágenes y re­su­l­ta­dos de búsquedas fre­cue­n­tes en las webs dinámicas. Varnish es un software muy popular de al­ma­ce­na­mie­n­to en caché. A di­fe­re­n­cia de muchos de sus co­m­pe­ti­do­res, este software libre se de­sa­rro­lló, ini­cia­l­me­n­te, como un ace­le­ra­dor web. Para poder utilizar Varnish Cache es necesario que el servidor cuente con un sistema operativo Unix y tenga su­fi­cie­n­tes permisos root para su in­s­ta­la­ción. 

Así funciona Varnish Cache

El servidor donde se encuentra el contenido de la página web inicia Varnish di­re­c­ta­me­n­te como un proxy inverso. Cuando un usuario visita la web, la solicitud es procesada ini­cia­l­me­n­te por el servidor original, mientras que el Varnish almacena la solicitud y los co­n­te­ni­dos. Así, cuando el servidor recibe una solicitud parecida, los datos serán cargados di­re­c­ta­me­n­te desde Varnish Cache. En otras palabras: el software almacena todos los datos en caché y le permite al sistema operativo elegir aquellos que al­ma­ce­na­rá pe­r­ma­ne­n­te­me­n­te en el disco duro del servidor. Esto impide que los datos sean al­ma­ce­na­dos en caché y en el disco duro al mismo tiempo.

Varnish también cumple funciones de ba­la­n­cea­dor de carga. Con la ayuda del algoritmo de pla­ni­fi­ca­ción round robin, las so­li­ci­tu­des entrantes del cliente se tratarán como su­b­pro­ce­sos de trabajo (hilos) para ser manejados po­s­te­rio­r­me­n­te por Varnish Cache. Un límite fijo determina el número de hilos co­n­cu­rre­n­tes que pueden ser pro­ce­sa­dos y, de ser alcanzado, Varnish pondrá todas las so­li­ci­tu­des po­s­te­rio­res en espera. Cuando las so­li­ci­tu­des en espera exceden el límite, se blo­quea­rán todas las co­ne­xio­nes entrantes.

La co­n­fi­gu­ra­ción de Varnish como proxy inverso se controla pri­n­ci­pa­l­me­n­te a través del Varnish Co­n­fi­gu­ra­tion Language (VCL). Este lenguaje de gestión de pe­ti­cio­nes permite escribir hooks (in­te­r­fa­ces) que facilitan la in­te­gra­ción de código extraño en la apli­ca­ción. Al cargar un script en VCL, este se traduce al lenguaje de pro­gra­ma­ción C y es compilado en una librería del programa. Estas rutinas VCL se vinculan po­s­te­rio­r­me­n­te al caché de Varnish. Si el gestor de co­n­te­ni­dos, el sistema eCommerce o la apli­ca­ción web utilizada in­te­r­pre­tan el lenguaje de marcado ESI (Edge Side Includes), Varnish ofrece la po­si­bi­li­dad de almacenar páginas completas. El lenguaje de marcado genera las llamadas etiquetas ESI en los archivos HTML, di­s­ti­n­guie­n­do así el contenido dinámico. Con esto, cada vez que el cliente realiza una solicitud, Varnish Cache reconoce las etiquetas y carga el contenido apropiado.

Las ventajas y de­s­ve­n­ta­jas de Varnish Cache

La op­ti­mi­za­ción del alo­ja­mie­n­to web propio con Varnish Cache puede resultar de gran utilidad frente a un aumento de su co­m­ple­ji­dad y del número de vi­si­ta­n­tes de la web. Sin embargo, la im­ple­me­n­ta­ción del software no es re­co­me­n­da­da para todo tipo de proyectos web. Para tener una mejor visión en conjunto, hemos resumido los pros y los contras de Varnish:

Ventajas:De­s­ve­n­ta­jas:
✓ Velocidad de carga más rápida gracias al al­ma­ce­na­mie­n­to de co­n­te­ni­dos en la memoria✗ Para aquellos sistemas que no in­te­r­pre­tan ESI, Varnish Cache no ofrece ninguna po­si­bi­li­dad de op­ti­mi­za­ción
✓ Balance de carga en el servidor ✗ Aumento de la co­m­ple­ji­dad y la su­s­ce­p­ti­bi­li­dad a errores
✓ Lenguaje de marcado Edge Side Includes✗ No hay soporte para TLS/SSL, es decir, para HTTPS
✓ El sistema operativo almacena co­n­te­ni­dos en el disco duro del servidor✗ Complejos procesos de in­s­ta­la­ción y co­n­fi­gu­ra­ción. Requiere ex­pe­rie­n­cia
✓ Balanceo de carga con el método round robin✗ Solo para sistemas ope­ra­ti­vos Unix
✓ Opciones flexibles de co­n­fi­gu­ra­ción gracias a VCL

La anterior co­m­pa­ra­ción evidencia que Varnish Cache es el co­m­ple­me­n­to adecuado para las funciones de al­ma­ce­na­mie­n­to en caché ya exi­s­te­n­tes (en clientes y se­r­vi­do­res web) cuando se trabaja con una apli­ca­ción web que permite in­te­r­pre­tar el lenguaje de marcado ESI. Por otro lado, la in­s­ta­la­ción y co­n­fi­gu­ra­ción de Varnish Cache, in­clu­ye­n­do las etiquetas ESI, no es sencilla. Además, debido a que Varnish no admite co­ne­xio­nes TLS/SSL, es necesario utilizar otro servidor proxy para ga­ra­n­ti­zar una tra­n­s­mi­sión segura.

Aquellos proyectos en los que se configure Varnish Cache co­rre­c­ta­me­n­te, así como sus etiquetas ESI, ace­le­ra­rán su velocidad de carga mucho más que uti­li­za­n­do métodos co­n­ve­n­cio­na­les de al­ma­ce­na­mie­n­to en caché. En co­n­se­cue­n­cia, este software reducirá en gran medida el tiempo de carga para tus vi­si­ta­n­tes, lo que a largo plazo si­g­ni­fi­ca­rá una tasa de co­n­ve­r­sión si­g­ni­fi­ca­ti­va­me­n­te mayor. De la misma forma, te be­ne­fi­cia­rás au­to­má­ti­ca­me­n­te de un mejor ranking en los motores de búsqueda y de una reducción de la carga de tu servidor web, que ya no será el único re­s­po­n­sa­ble del pro­ce­sa­mie­n­to de las co­ne­xio­nes entrantes. En pa­r­ti­cu­lar, Varnish Cache es un programa utilizado en su gran mayoría por ope­ra­do­res de tiendas online y páginas web dinámicas con una gran variedad de contenido.

In­s­ta­la­ción de Varnish Cache

Para instalar Varnish Cache, es necesario contar con permisos ad­mi­ni­s­tra­ti­vos del re­s­pe­c­ti­vo sistema Unix. Además, este debe haber sido instalado pre­via­me­n­te en el servidor web que lo utilizará. En el tutorial que mostramos a co­n­ti­nua­ción en­cue­n­tras los pasos ne­ce­sa­rios para instalar y co­n­fi­gu­rar Varnish. En este ejemplo se utiliza Ubuntu como sistema operativo y Apache como servidor web:

1. Varnish está incluido, por defecto, en el paquete de software de Ubuntu, pero no ne­ce­sa­ria­me­n­te su versión más reciente. Es por esto que, durante su in­s­ta­la­ción, Varnish permite acceder a su propio di­re­c­to­rio online. In­tro­du­cie­n­do el código a co­n­ti­nua­ción podrás abrir el di­re­c­to­rio y uti­li­zar­lo como código fuente:

sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list

2. A co­n­ti­nua­ción, se deberán leer las listas del paquete e instalar Varnish

sudo apt-get update
sudo apt-get install varnish

3. Ahora es el momento de co­n­fi­gu­rar el archivo de Varnish para que el software sepa dónde encontrar el contenido de la web. Para ello es necesario abrir el siguiente archivo:

sudo nano /etc/default/varnish

Aquí deberás cambiar los valores para “DAEMON_OPTS” como se muestra a co­n­ti­nua­ción:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

4. Guarda los cambios y abre el archivo default.vlc: 

sudo nano /etc/varnish/default.vlc

Es­pe­ci­fi­ca el puerto 8080 como fuente para el contenido cubierto por Varnish:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

5. Por último, es­pe­ci­fi­ca el puerto de Apache en 8080 (co­n­fi­gu­ra­do por defecto en 80). Para ello, puedes abrir el fichero de co­n­fi­gu­ra­ción del puerto de Apache:

sudo nano /etc/apache2/ports.conf

Cambia el número de puerto para las entradas “Na­me­Vi­r­tua­lHo­st” y “Listen”

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Ajusta el archivo pre­de­te­r­mi­na­do (etc/apache2/sites-available/default) de la misma forma que la entrada Vi­r­tua­lHo­st.

7.  A co­n­ti­nua­ción, reinicia Varnish y el servidor para finalizar la in­s­ta­la­ción y la co­n­fi­gu­ra­ción:

sudo service apache2 restart
sudo service varnish restart

Si necesitas in­s­tru­c­cio­nes adi­cio­na­les para la in­s­ta­la­ción de Varnish en otros sistemas ope­ra­ti­vos Unix o buscas el código de programa de este software, dirígete a la sección de descargas de su página web oficial varnish-cache.org.

Ir al menú principal