Dentro de los aspectos necesarios para aumentar la optimización de nuestro sitio para los motores de búsqueda, uno de los aspectos a tener muy en cuenta es su velocidad de carga.
Mejorar el tiempo de carga, también llamado WPO (Wep Performance Optimization), involucra directamente el presupuesto de rastreo que asignan los buscadores a cada sitio. Un buscador asigna a su bot, digamos Googlebot y no es casualidad, un determinado tiempo en segundos para revisar e indexar un sitio. Si en ese tiempo no lo revisa completo por demoras en la carga de las páginas, o por perder el tiempo en explorar páginas sin contenido relevante, lo dejará para la siguiente ocasión.
Es en ese período entre indexaciones que tus páginas nuevas no se registrarán en las bases de datos del buscador, no contarán en las búsquedas de los usuarios y no aparecerán en los resultados de búsqueda, las SERPs. Esto quiere decir que, por descontado, los productos que anuncian no se van a vender. Para una tienda en línea montada en Magento esto es letal, porque es un cliente que se te escapa y, por tanto, dinero que estás perdiendo.
Tiempo de carga y los clientes
Pero digamos que la página de un producto ya está indexada, el usuario la encuentra en, digamos, Google y la solicita. Comienzas a competir entonces con en el plano de la experiencia de usuario: el cliente de un e-commerce lo quiere todo y lo quiere para ayer. El 68% de las quejas sobre las tiendas online proviene de demoras en la carga de las páginas.
Por lo general, ya las conexiones a internet, incluso por línea de datos del móvil, no son el paso limitante. Así que si una página demora en cargar, el cliente se irá con buen viento a otra parte y la culpa es del sitio en cuestión. Responde a estas preguntas con sinceridad:
- ¿Cuántos segundos esperas a que una página cargue, antes de presionar atrás y regresar al buscador?
- ¿Regresarías a un sitio que demora en cargar?
- ¿Recomendarías este sitio a tus amigos?
- ¿Carga igual de rápido desde un Smartphone?
De todos estos malos escenarios posibles, el peor es el primero, pues incrementa un parámetro llamado tasa de rebote. Esta le está diciendo a Google que el usuario no encontró lo que buscaba en tu página, y por tanto no estás aportando contenido valioso. En consecuencia, mientras tu tasa de rebote se incrementa, tu posicionamiento baja.
En el 2016 y según un video publicado por el propio Google, una tienda online debería cargar en 2 segundos o menos. Pero justo ahora, esa cota de tiempo ha bajado a 0.5 segundos para ser considerado por el buscador como un resultado satisfactorio. La lógica detrás de esto es muy simple: si un sitio carga muy rápido, puede aportar al cliente más contenido porque muestra más páginas en el mismo tiempo, y por tanto es más valioso como fuente de información.
No solo es un problema de no perder clientes, sino de ganarlos. Según las estadísticas, un sitio que carga sus páginas en menos de un segundo incrementa diariamente sus visitas en un 4.6%. Los clientes son exigentes, pero recomiendan a sus amigos las páginas que cargan rápido… y eso Google lo tiene en muy alta estima.
También la tasa de conversión de los sitios rápidos se incrementa en un 7%, así que velocidad es igual a dinero.
Cómo mejorar el tiempo de carga en Magento
Junto a PrestaShop y OpenCart, Magento es uno de las tres plataformas que lidera el apartado de las tiendas online a nivel de usuarios a nivel mundial. Con muchísimas prestaciones, que se multiplican en la versión de pago Magento Enterprise Edition, es un sistema estable, seguro y bastante rápido… lo cual no deja de ser su talón de Aquiles.
La velocidad de carga y navegación es entonces el Santo Grial, que nos permite mejorar el posicionamiento de nuestro sitio en los buscadores, cuando ya hemos optimizado el SEO on page de nuestros contenidos.
Pero, ¿cómo tener idea de cuál es nuestra velocidad de carga, que factores están lastrándola y dónde podemos incidir? Puesto que Google es el buscador número uno del mercado, nada más lógico que confiar en él y revisar cuál es su opinión sobre nuestro sitio. Para ello debemos acudir a su página Google PageSpeed y ver su valoración sobre dónde debemos centrar nuestro WPO. Para esto, he aquí unos cuantos pasos que puedes seguir para mejorar la velocidad de carga en Magento.
Hosting vs servidor dedicado
Aunque es una solución más costosa y difícil de implementar, este sería un paso 0 en tu estrategia para acelerar Magento. No es lo mismo contar con un servidor exclusivo para tu tienda virtual que compartir ancho de banda con un hosting que maneja muchos sitios de forma simultánea.
Al elegir y evaluar la factibilidad de un hosting para Magento, deben tenerse en cuenta aspectos como capacidad de almacenamiento, tipo de disco, capacidad de la RAM y el tráfico de datos.
Por supuesto, esta variante es rentable para tiendas con grandes volúmenes de ventas y tráfico, pero teníamos que mencionarlo.
No uses nunca hotlinks
Los hotlinks son elementos (normalmente imágenes) que están alojados en otros servidores pero se muestran en tu sitio. Esta práctica es fatal para el WPO, porque para mostrar tu página agregas el tiempo que demora en cargarse el contenido externo.
Usar Varnish
Esta es una de las soluciones más efectivas para aumentar la velocidad de carga en Magento, basada en crear un caché para mostrar rápidamente contenido dinámico. Puedes encontrar más información en este artículo en inglés.
Amazon’s AWS CDN solution
Muy útil para hacer caché del contenido estático del sitio, como JavaScript, ficheros CSS e imágenes. Una solución gratuita para el mismo problema es instalar la extensión Fooman Speedster, que comprime los JS y CSS en tu tienda y hace una diferencia notable en cual a su WPO.
Un correcto tratamiento de imágenes
Este es un punto a tener muy en cuenta a la hora de optimizar el tiempo de carga y la usabilidad de nuestro sitio. El cliente quiere ver lo que está comprando, y tenemos que mostrárselo de una forma efectiva y rápida.
Lo primero es mostrar las imágenes con respecto a la pantalla donde el cliente la va a ver. Hoy es día esto equivale a tener en cuenta varias resoluciones, pues nuestro sitio será visto en PCs, laptops, tabletas y smartphones indistintamente. Por ello, debemos contar con un set de la misma imagen redimensionada.
La mejor solución para Magento es utilizar la etiqueta HTML <picture>:
<picture>
<source srcset=»<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(360, 365); ?>» media=»(min-width:1200px)»>
<source srcset=»<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(293, 297); ?>» media=»(min-width:992px)»>
<source srcset=»<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(710, 710); ?>» media=»(min-width:768px)»>
<source srcset=»<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(710, 710); ?>» media=»(min-width:300px)»>
<img class=»img-responsive»
src=»<?php echo $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(360, 365); ?>»
alt=»<?php echo $this->stripTags($this->getImageLabel($_product, ‘small_image’), null, true) ?>»/>
</picture>
Para redimensionar las imágenes sin perder calidad, se puede emplear el módulo gratuito Image Optimizer for Magento, que es además muy intuitivo.
Habilitar la compresión en el servidor
Quita el #) en el .htacess (Linea 52) en la siguiente regla:
#php_flag zlib.output_compression on
Reducir el tamaño de los ficheros HTML, CSS, JavaScript
Acá no hablamos de comprimir, sino de eliminar caracteres innecesarios de estas páginas para reducir su tiempo de carga. Una buena solución es el módulo Minify HTML CSS JS for Magento, que hace esta tarea por ti. Al reducir el contenido, disminuye los recursos necesarios para cargarlo (o ser inspeccionado por Googlebot) y da como resultado un sitio más rápido.
Usa solo los módulos necesarios
Como en otros CMS, Magento te ofrece gran número de módulos que hace tu vida fácil y tu sitio agradable. No obstante, estos tienen que cargarse cada vez que se accede a tu sitio, y es tiempo que cuenta. Sin exagerar, debes obtener un balance entre la comodidad y la velocidad y quedarte solo con los imprescindibles para el correcto funcionamiento de tu negocio en línea.
Tres trucos para hacer WPO en Magento, directo con el servidor
Por último, te muestro tres trucos más específicos ya tendrás que aplicarlos con ayuda de tu hosting o con tu administrador de sistema si tienes un servidor dedicado, pero bien vale la pena para aumentar tu velocidad de carga en Magento. Tienen más que ver con cómo el servidor procesa tu sitio, que con su contenido o diseño.
Asegúrate que tu apache tiene el KeepAlives activado
A través de este hack, una conexión TPC sirve múltiples peticiones HTTP, lo que reduce el tiempo de descarga de los ficheros HTML, JavaScript, y las imágenes.
Modifica la configuración de tu servidor MySQL
Las distribuciones Linux son conservadoras en cuanto a hardware, pero pueden exprimirse para sacarle el jugo a tu servidor. Pero puedes modificar tu my.cnf en el hosting o con el administrador de sistema para que luzca así:
key_buffer = 512M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 4m
read_buffer_size = 4m
read_rnd_buffer_size = 2m
myisam_sort_buffer_size = 64m
tmp_table_size = 128m
query_cache_size = 96m
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300
Usa más RAM y menos disco duro
Magento utiliza el disco duro de los servidores para guardar la cache y las sesiones de los usuarios. Al ser la entrada y salida de datos a disco el paso limitante para los ordenadores, si cambiamos esta operación a la memoria en lugar de al disco podemos darle un buen impulso a Magento.
Para esto, podríamos ubicar /var/www/domain.com/var/cache/ y /var/www/domain.com/var/session/ en la RAM, dando a la cache un máximo de 256MB RAM y 64MB RAM para la session, así:
mount -t tmpfs -o size=256M,mode=0744 tmpfs /var/www/domain.com/var/cache/
mount -t tmpfs -o size=64M,mode=0744 tmpfs /var/www/domain.com/var/session/
Lógico, que cada vez que se reinicie el servidor se pierde esta configuración, pero podemos perpetuarla añadiendo a /etc/fstab:
tmpfs /var/www/domain.com/var/cache/ tmpfs size=256,mode=0744 0 0
tmpfs /var/www/domain.com/var/session/ tmpfs size=64,mode=0744 0 0
Y ya está.