Mejorar el rendimiento en Magento, cuellos de botella
10 Mar 2015

Mejorar el rendimiento en Magento, cuellos de botella

¿Tienes problemas de rendimiento en Magento?

10 Mar 2015

En ocasiones llegan a nosotros nuevos clientes que tienen problemas de rendimiento en Magento, debido a alguna nueva extensión que han instalado, o a una enorme cantidad de productos y categorías.

Medición de tiempos de rendimientoCuando hay un problema de rendimiento y está descartado el hardware, errores del lado del cliente, caché de Magento, o cualquiera de los sistemas aceleradores o de caché tipo APC, Xcache, Varnish, etc, lo que toca es mirar de qué forma se ejecutan los procesos. Hay que medir el tiempo de ejecución de cada proceso y ver si hay alguno que tarde bastante más que el resto. Hay sistemas para medir los tiempos de ejecución de Magento en la carga de una página que veremos en otros posts.

Cuando detectamos en nuestro Magento un proceso que es muy lento puede ser debido a algún tipo de error que podremos investigar y solucionar, pero a veces el problema es alguna querie MySQL lenta que no se ha realizado correctamente en alguna de las extensiones instaladas, o incluso estando todo correcto también podemos tener este problema cuando nuestro Magento tiene una cantidad enorme de categorías con el atributo “is_anchor” a true, y una enorme cantidad de productos y filtros de atributos. Una vez detectado el problema de rendimiento tenemos la oportunidad de buscar una solución para esa querie lenta.

En Magento, en ocasiones, algunas extensiones vienen encriptadas para que no se pueda modificar o copiar el código, en esta ocasión e incluso aunque el código esté abierto, otra buena solución es aprovechar la librería Zend_Cache que ya tenemos cargada para cachear la parte lenta de la web. Con Zend_Cache podemos cachear html o datos, por ejemplo, podemos cachear la respuesta de esa querie lenta para que no la haga cada vez. Esto optimizará el rendimiento de Magento, porque se ahorra el tiempo de respuesta de la query.

Para cachear con Zend_Cache lo que necesitamos primero es definir una clave de caché. Una clave de caché tiene que ser única. Tenemos que pensar en qué dato único, o qué combinación única de datos necesitamos para obtener ese código o esos datos concretos. Por ejemplo:

  • Si cacheamos el menú de categorías y tenemos claro que no varía en ningúna página de nuestro Magento podemos utilizar una clave fija (p.ej: “micache_menu”).
  • Pero si nuesto menú va a variar dependiendo de en qué categoría nos encontremos con un class=”active”, utilizaremos una clave dinámica (p.ej: “micache_menu”.$categoryId)

Vamos a ver cómo implementaríamos la caché del bloque “menu” con una clave fija:

$opcionesFrontend = array(
  'lifetime' => 3600, // el tiempo que pasará hasta que la caché caduque 
  'automatic_serialization' => true
);
$opcionesBackend = array( 'cache_dir' => Mage::getBaseDir('cache')); // Para que guarde los archivos de caché en var/cache/*

$cache = Zend_Cache::factory('Core', 'File', $opcionesFrontend, $opcionesBackend);
$clave_cache = "micache_menu";
if($menucacheado = $cache->load($clave_cache)){
  echo $menucacheado;
} 
else {
  $menusincache = $this->getChildHtml('menu');
  echo $menusincache;
  $cache->save($menusincache); // Guardamos el html generado en caché con la clave "micache_menu"
}

Suponiendo que la llamada a $this->getChildHtml(‘menu’); es muy lenta, esta sería una forma sencilla de mejorar el rendimiento de nuestro Magento.

Resumen
Título
Mejorar rendimiento en Magento
Descripción
Mejorar el rendimiento de Magento, explicamos las claves para optimizar Magento mediante el uso de Zend cache.
Autor
Way2 Ecommerce

Way2 Ecommerce

Expertos en Magento ecommerce. Definimos, desarrollamos, mantenemos y potenciamos tiendas online de la mas alta calidad para que tu ecommerce supere todas tus expectativas.
Way2 Ecommerce

Latest posts by Way2 Ecommerce (see all)

Deja tu comentario
Otras entradas
Comentarios
  1. Marta Abril 20th, 2015 5:45PM

    Que bien encontrar entradas de este tipo. Haremos pruebas con Zend Cache para ver si mejoramos los tiempos de respuesta de las categorías con mas productos de nuestra tienda online.
    Gracias por compartir información para mejorar la velocidad de Magento.
    Saludos

    • Way 2 Ecommerce Mayo 19th, 2015 4:31PM

      Gracias por tu comentario Marta.
      Esperamos que esta entrada del blog de ecommerce te resulte de utilidad para mejorar la velocidad de vuestro Magento. Seguiremos publicando mas entradas de este tipo para mejorar el rendimiento de Magento.
      Ante cualquier duda estamos en contacto.
      Un saludo.

Comentario