Get it on Google Play
Tu partner Freelance para tus proyectos IT

Web WordPress x10 con Varnish Cache(Probado con Apache Bench)

15-09-2020

Aquí tenemos el vídeo que mucha gente estaba pidiendo sobre como optimizar WordPress con una cache externa. Para estos casos lo mejor es Varnish Cache que podemos arrancarlo como un simple contenedor.

Recordemos que el hecho de que una web cargue rápido es crucial para temas SEO, experiencia de usuario, en el tiempo de duración media de la sesión o las ventas(Si, el impacto de la velocidad de carga sobre las ventas está estudiado) entre otras muchas cosas.

Para esto hemos instalado un WordPress con Docker, hemos arrancado y configurado Varnish también con Docker y hemos hecho unos test de carga con Apache Bench para poder medir la diferencia de rendimiento.

Instalar WordPress

Lo primero ha sido crearnos una base de datos en MySql o MariaDB(En el vídeo hemos usado MariaDB). Para ello nos hemos conectado vía terminal y hemos creado una BBDD:

# Instrucción bash para connectar a Mysql
mysql -u<usuario> -p<password> -h<host>

# Instrucción SQL para crear la BBDD
create database <nombre-db>;

Y después hemos lanzado el contenedor con el WordPress:

sudo docker run --name wordpress wordpress

Finalmente hemos tenido que terminar la instalación conectándonos a la URL del WordPress.

Configuración y arranque de Varnish

Varnish consta de un único fichero de configuración donde deberemos configurar el siguiente proceso de decisión sobre que se hace con una petición(Se coge de la cache, se cachea, etc.):

Varnish Flow

Varnish Flow

En nuestro caso hemos generado el siguiente fichero de configuración llamado ‘default.vcl'(la terminación vcl significa ‘Varnish Cache Language’, es própio de la aplicación):

vcl 4.0;

backend default {
   .host = "172.17.0.4:80";
   }

sub vcl_init {
	}

sub vcl_recv {
	if (req.method != "GET" && req.method != "HEAD") {
	  	return (pass);
		}

	if (req.http.X-Requested-With == "XMLHttpRequest") {
    		return(pass);
		}

	if (req.http.Authorization || req.method == "POST") {
	  	return (pass);
		}
	
	if (req.url ~ "(wp-admin|post\.php|edit\.php|wp-login)") {
	    	return(pass);
		}

	if (req.url ~ "/wp-cron.php" || req.url ~ "preview=true") {
	    	return (pass);
		}
	}

sub vcl_backend_response {

	}

Como vemos, Varnish permite configurar casi cualquier lógica que necesitemos. Ahora si, ya podemos arrancar el contenedor con Varnish mapeando nuestro fichero de configuración:

sudo docker run --name varnish --rm -v /ruta-a/default.vcl:/etc/varnish/default.vcl:ro varnish:latest

Ahora si, ya tenemos ambos sistemas funcionando y simple vista ya se nota una mejora de rendimiento.

Pruebas de carga con Apache Bench

Apache Bench es un comando que podemos instalar en ubuntu, debian y derivados con el siguiente comando:

sudo apt install apache2-utils

Y después ya podemos usarlo, tiene muchas opciones de configuración pero nosotros hemos usado solo dos:

ab -c 100 -n 1000 http://172.17.0.4/

Donde el parámetro ‘-n’ indica que queremos hacer 1000 peticiones y el parámetro ‘-c’ indica que se hagan en bloques de 100 conexiones concurrentes.

El resultado ha sido simplemente brutal, en el vídeo ha salido que con Varnish es 25 veces mas rápido.

Si te ha servido, por favor comparte
 

Leave a Reply