:::: MENU ::::

Acelerar Magento con Varnish Caché

4.00 avg. rating (77% score) - 4 votes

Varnish Caché es uno de los sistemas más populares para acelerar la carga de páginas web ya que Los resultados que se consiguen son realmente espectaculares, especialmente en páginas web dinámicas donde el contenido se gestiona y se genera por medio de algún sistema CMS.  En particular se está convirtiendo en uno  de los sistemas preferidos para mejorar la velocidad de carga de tiendas Magento.

Antes de continuar leyendo es muy recomendable que eches un vistazo a este artículo (Optimizar Magento) en el que se comentan otras optimizaciones básicas para tu tienda Magento. La optimización mediante Varnish debería aplicarse siempre después de haber realizado el resto de optimizaciones (al menos las básicas).

Ideas básicas sobre Varnish Caché

Lo primero antes de aventurarnos en la instalación de Varnish en nuestra tienda Magento es entender cómo y por qué funciona el sistema. De lo contrario no podremos hacer frente a posibles problemas que surjan durante la implantación.

Varnish es lo que se denomina un sistema proxy inverso, y su funcionamiento básico puede resumirse en el siguiente gráfico:

Magento y Varnish

Como puede verse, Varnish se coloca entre los usuarios y el servidor Web (Apache + MySQL habitualmente).

Cuando un usuario cualquiera solicita cualquier página de nuestro Magento (pongamos por ejemplo la home), Varnish realiza las siguientes acciones:

  • Comprueba si la tiene almacenada en su memoria caché.
  • Si la tiene almacenada, la envía al usuario sin «molestar» al servidor web ni al servidor de base de datos.
  • Si no la tiene almacenada, la solicita al servidor web, la almacena en su memoria caché y la envía al usuario.

Por qué Varnish mejora el rendimiento de Magento

Cuando nuestro servidor tradicional (Apache + MySQL + PHP) tiene que generar una página de nuestra tienda Magento, debe realizar decenas de consultas a la base de datos y analizar la información para finalmente construir el HTML que se envía al navegador del usuario.

Tras la primera visita a nuestra home, Varnish guarda ese HTML ya generado, por lo que en las siguientes visitas a la página home, los usuarios no deben esperar a la realización de ese trabajo y la página carga mucho más rápidamente.

La reducción del tiempo de carga con este sistema es habitualmente superior al 75% (algunos un poco exagerados dicen que hasta el 99%, pero no es habitual conseguir esos resultados).

Y si Magento es tan avanzado, ¿por qué no tiene esto de serie?

Bueno, en realidad si tiene un sistema muy similar, pero únicamente se distribuye con la versión Magento Enterprise.

En ese caso, todo el sistema viene preparado con un sistema de caché de página completa desarrollado por el equipo de programadores de Magento (no es Varnish, si no un sistema similar completamente integrado dentro de Magento).

¿Alguna dificultad especial para tener Magento + Varnish en mi tienda online?

Sí, este tipo de sistemas de caché presentan principalmente dos problemas que es necesario tener en cuenta y considerar antes de realizar la puesta en marcha de Varnish.

El primero es un problema común a todos los sistemas de caché y se denomina invalidación de la caché.

Según el comportamiento que hemos comentado anteriormente, imagina la situación en la que añades nuevos productos a tu tienda Magento. Probablemente quieras que esos nuevos productos aparezcan como novedades en una sección en tu página home.

Como tu página home ahora está almacenada en Varnish, el nuevo contenido no se enviará a los usuarios a no ser que tengamos algún mecanismo de invalidación de caché, que haga que ante cualquier cambio, Magento le indique a Varnish que la copia que mantiene almacenada ya no es válida.

Para solucionar este problema se pueden considerar esas notificaciones de Magento a Varnish por medio de la instalación de alguna extensión en Magento (Turpentine, que se comenta más abajo es la más habitual) o un tiempo de invalidación, pasado el cual las páginas almacenadas en Varnish se consideran no válidas automáticamente (tiempo TTL).

El segundo problema con Magento y Varnish es que existen zonas de la página que no pueden cachearse.

Por ejemplo, probablemente en tu tienda Magento existe en la parte superior un icono con un carrito de la compra que va acompañado de un número de productos actualmente dentro del carrito. Ese número cambia muy a menudo, y además es diferente para cada visitante de la tienda online, con lo que no puede quedar almacenado en la memoria de Varnish.

Para que ese número se muestre correctamente se pueden algunas técnicas como hole-punching o la utilización de ESI-blocks. Explicaremos esto en detalle en otro artículo, pero para facilitar la solución de estos problemas, existen extensiones como Turpentine para Magento que comentaremos más abajo durante la instalación.

¿Qué es necesario para configurar Magento + Varnish?

Para configurar Magento + Varnish en tu servidor, necesitarás lo siguiente:

  • Tener un servidor VPS o dedicado con acceso root a la consola (o pedir a tu proveedor que te eche una mano).
  • Tener práctica en la instalación de nuevas extensiones en Magento.
  • Conocimientos básicos de instalación de nuevos paquetes y su configuración en Linux.
  • Conocimientos básicos de la configuración de Apache.
  • Un poco de paciencia y un buen tutorial ;)

¿Puedo instalar Varnish y Turpentine yo mismo?

Si no tienes experiencia previa en este tipo de instalaciones y configuraciones te recomendamos que te pongas en contacto con un experto o al menos que no lo hagas directamente en tu servidor de producción.

En cualquier caso, realizar la instalación y una configuración básica, no suele ser complicado en la mayoría de tiendas, así que te dejamos un tutorial con los pasos que deberás dar:

SIGUE: INSTALAR Y CONFIGURAR VARNISH CACHÉ

 




3 Comments

  • Responder Omar |

    Hola Daniel.

    Me gusto bastante tu articulo.
    Se ve que dominas muy bien todos los parametros de optimizacion.

    Actualmente tengo un website montado en magento con memcached + opcached y mysql 5.5 (actualice a 5.6 pero aumento mucho la carga en memoria ram con pruebas de estress).
    Si fuera posible, me gustaria ver un articulo sobre la correcta configuracion y optimizacion de mysql y tambien sobre nginx ya que no existe mucha información al respecto en español.

    Muchas gracias que estes bien!
    saludos desde Chile

    • Responder Daniel Navarro Murillo |

      Gracias por tus comentarios Omar. Me alegra saber que los artículos son de utilidad.

      Sin duda, esos que comentas son temas pendientes. Los tengo en la cabeza, pero últimamente no puedo escribir nuevos artículos por falta de tiempo.

  • Responder Pedro|| |

    Increible los tutoriales. Estoy comenzando con magento y existen dos blog que me gustan mucho por su calidad de informacion y uno de esos es este. Faslta actualizar mas contenido, ya que la V 2.2.2 de m2 ha cambiado increiblemente, he notado por los post y revisando el core y las funciones lo he notado. Gracias por todo

Hey! Qué opinas sobre el artículo?