En este Tutorial veremos como funciona la Caché en Magento.
¿Qué es la caché y como funciona?
La Caché es el lugar donde la información es guardada para luego ser servida al usuario de una forma más rápida.
Estos datos son guardados en ficheros, en la base de datos o en la propia memoria del servidor.
Por lo que la Caché es sin lugar a dudas parte importante en Magento ya que beneficia al comprador que quiere comprar rápido y sin cargas lentas de página.
Gestión de la Caché
Magento2 nos ofrece diferentes formas de gestionar la caché y voy a intentar hablaros un poco de cada una de ellas:
- A través de Sistema de Ficheros.
- Utilizando la Base de datos MySQL
- En memoria utilizando Redis.
- Usando la caché de proxy HTTP con Varnish.
Sistema de Ficheros
Magento2 usa por defecto el sistema de ficheros para guardar la caché.
Esta información es salvada en los directorios var/cache/ y var/page_cache/.
La velocidad de acceso a esta caché dependerá de la velocidad de lectura y escritura del disco donde se almacen los datos (por lo que se recomienda un disco sólido SSD).
Podremos limpiar la cachñe de varias formas:
- Usando la Interfaz de Comandos que nos ofrece Magento2.
1 2 |
$ ./bin/magento cache:clean [type] $ ./bin/magento cache:flush [type] |
- Desde el propio backend de Magento en System > Tools > Cache management
- O usando la fuerza bruta y borrando el contenido de los directorios var/cache/ y var/page_cache/
1 |
rm -r ./var/cache/* |
Aunque usar este tipo de caché tiene sus ventajas, no es recomendado en entornos de producción.
Esto se debe a que la velocidad de lectura y escritura del disco suele ser menor que la velocidad a la hora de realizar operaciones directamente en memoria o hacia una base de datos.
Base de datos MySQL
Magento2 nos permite usar el motor MySQL como método para gestionar la caché.
Se guardará en las tablas cache y cache_tag.
Esta solución tiene sus ventajas y puede ser escalable en el caso de que nuestra tienda esté alojada en diferentes servidores para balancear la carga ya que esta caché de la base de datos podría ser usada en común por todos ellos.
Aunque los accesos a la caché de la base de datos son más rápidos también tienen sus desventajas por lo que no se recomienda en tiendas en producción.
En el caso de tener varios websites y stores estos podrían generar millones de registros en la Base de Datos causando un gran consumo de memoria del servidor.
No requiere gran habilidad habilitarla, podéis ver más información aquí.
Redis
Redis es la solución para gestionar la caché más utilizada en la Web.
Se comporta como una gran base de datos con la diferencia que está alojada en la propia Memoria del servidor lo que permite acceder a la información de una forma más rápida.
A pesar de todo no es muy utilizada en tiendas Magento.
Al igual que la Caché de base de datos, Redis almacena la cache marcándola con etiquetas (llamados hashes) para poder acceder a la información mucho más rápido.
También permite la posibilidad de replicar los datos almacenados hacia otros servidores.
A pesar de todo tiene sus desventajas porque el acceso a la memoria caché depende de la velocidad de los módulos del propio servidor.
Y su mayor defecto es que el tamaño de los datos cacheados será limitado por la cantidad de memoria instalada en el servidor.
Su puesta en funcionamiento es mucho más compleja.
Varnish
La solución que ofrece Magento2 en entornos de producción es Varnish ya que está diseñado para acelerar el trafico HTTP.
Varnish guarda los datos cacheados en una capa superior y antes de que los datos sean accedidos por HTTP.
Esto quiere decir que cuando un usuario hace una petición no la gestiona el propio servidor Magento sino el propio Varnish, por lo que se acelera el tiempo de respuesta y se reduce el consumo de ancho de banda
Por supuesto también podremos limpiar la Caché usando los comandos de Magento cache:clean.
Su instalación también es más compleja.
Conclusiones
Magento recomienda usar Varnish o Redis en entornos de producción y el sistema de ficheros y base de datos en entornos de desarrollo.
Más información sobre la gestión de la caché en la Parte 2.