La Guía del Desempeño de Magento 2 (características predefinidas,extensiones y consejos diferentes)

- Magento 2

Desempeño de Magento 2

Buen Desempeño es siempre un aspecto principal de un proyecto exitoso de comercio electrónico. No es sólo importante como un factor vital de ranquin, pero también es fuertemente apreciado por clientes. Así, una tienda rápida online frecuentemente tiene una conversión más alta comparando a websites lentes. Por consiguiente, esto hace tus visitantes transformarse en compradores y te ayuda a aumentar tus ventas. Ahora, cuando la importancia del desempeño de Magento 2 es obvia, llegó el momento de esclarecer cómo aumentarlo en el caso de la plataforma.

En realidad, ya tenemos una guía detallada sobre la productividad de Magento 1.X, pero la segunda versión difiere mucho y requiere un otro enfoque a los mejoramientos del desempeño. Magento 2 es más rápido, requiere menos recursos y provee una mejor optimización cuando se trata de cargas pesadas comparando a las versiones precedentes 1.X. Además, ella ofrece muchas nuevas características del desempeño en la forma predefinida. Por ejemplo, obtienes un apoyo nativo a Varnish, Redis y Nginx así como full page caching en Magento 2. En cuanto a la primera versión de la plataforma de comercio electrónico, todas estas características fueron disponibles sólo con la ayuda de personalizaciones y extensiones terceras.

Aunque Magento 2 provee mejores oportunidades relacionadas al desempeño, todavía hay mucho trabajo para ser hecho antes tu tienda de comercio electrónico ser lo más rápido posible. Entonces, vamos a empezar con Nginx.

Apoyo Completo a Nginx

how to use nginx with magento 2

Nginx fue desarrollado teniendo tres principios esenciales en mente: desempeño alto, concurrencia alta y el nivel bajo de la utilización de memoria. Así, aumenta significativamente la velocidad de cada website. Para administrar pedidos, Nginx utiliza un enfoque asíncrono dirigido por eventos, mientras Magento 1.X predeterminado se basa en el enfoque orientado a proceso con MPM Evento como el modelo de proceso asíncrono. Debido a la arquitectura dirigida por eventos, Nginx muestra un desempeño más previsible aún bajos las condiciones de cargas pesadas.

Ya hemos mencionado arriba que Magento 2 ofrece un apoyo nativo a esta solución, entonces puede ser fácilmente instalada en la plataforma. Para descubrir cómo efectuar esta procedura, recomendamos que leas esta guía – Configuración de Nginx en Magento 2. Además, Magento 2 tiene una configuración recomendada de Nginx en carpeta raíz.  También puedes encontrarlo en GitHub aquí.

Magento 2 y Redis

using redis with magento 2

Redis  es un cache llave-valor avanzado que provee un desempeño de la cualidad excelente y ofrece algunas características como: la incrementación de valor en un hash; empujar un elemento a lista; añadir a string; recibiendo un conjunto clasificado de  miembros con el ranking más alto; y definir la intersección, unión etc.

Él incorpora algunos casos de uso para conjuntos de datos en-memoria que son la razón de los resultados impresionantes del desempeño. Así, puedes persistir al volcar el conjunto de datos a disk o añadir cada comando a un log. Por otra parte, si necesitas un cache en-memoria y lleno de características, la persistencia puede ser desactivada.

También, Redis incorpora la sincronización non-blocking y auto-reconexión con resincronización parcial en netsplit. Todas estas características lo hacen una solución extremadamente rápida para cada website de comercio electrónico, en particular para una tienda de Magento.

Si no sabes cómo instalar y utilizar Redis en la segunda versión de la plataforma popular de comercio electrónico, entonces, recomendamos que leas la guía de Magento 2: Configuración de Redis en Magento 2

Tipo diferentes de Cache

How to Manage Magento 2 Cache

Magento trabaja con los tipos seguintes de caché:

  • Configuración de Cache aparece cuando Magento junta configuración de módulos. También incluye configuraciones específicos de tienda de base de datos y el sistema de archivo.

  • Layout cache incluye layouts compilados de página.

  • Block HTML output cache consiste de fragmentos de página HTML para cada bloque…

  • Collections data cache junta queries de base de datos.

  • DDL cache es designado para trabajar con esquemas de base de datos.

  • Entity attribute value cache incluye Metadatos relacionados a atributos  EAV: labels de tienda, rendering de atributos, configuraciones de busca, etc.

  • Page cache junta datos sobre páginas HTML generadas.

  • Translations cache es relacionado a traducciones unidas de módulos.

  • Integration configuration cache es apuntado a integraciones compiladas.

  • Integration API configuration cache consiste de integración APIs  compilada.

  • Web services configuration cache es el caché de la estructura de API web.

Magento 2 Cache Types

Puedes encontrar configuraciones apropiadas seguindo System -> Cache Management. (Sistema -> Gerenciamiento de Caché). Para recibir más información, recomendamos que visites la página de nuestra guía de Gerenciamiento de Caché en Magento 2

Full Page Cache (FPC)

Full Page Cache in Magento 2

Full page caching es así poderoso debido a la posibilidad de almacenar el resultado de full page en caché. Como resultado, las cargas de página subsiguientes no requieren mucho la carga de servidor. Así, caching full page es obligatorio para websites de carga pesada, ya que conserva la carga de servidor lo más bajo posible y ayuda a evitar tiempo de inactividad aún si el tráfico está muy alto.  Además, al utilizar full page caching, vais a aumentar la velocidad de website de comercio electrónico, ya que todas las necesidades de servidor serán reducidas a la renderización y la busca de página del caché. Si es necesario, Magento puede limpiar este caché automáticamente, pero todavía puedes colocar cualquier data en cualquier segmento del caché en la forma manual.  Por favor, no olvides que es necesario limpiar y vaciar FPC después de modificar cualquier nivel de código que afecta la salida de HTML. Siempre conserva este caché activado, ya que él significativamente mejora el desempeño de Magento 2.

Varnish Cache

Magento 2 Varnish Guide

Varnish cache es un acelerador HTTP para APIs muy consumidos y websites dinámicos de contenido pesado. Magento 2 apoya a este caché en la forma predeterminada, por eso puedes fácilmente configurarlo para tu proyecto de comercio electrónico para aumentar el desempeño predefinido.

Cada servidor web recibe pedidos HTTP, pero no devuelve respuestas HTTP inmediatamente. Por esa razón, una larga secuencia de pasos son requeridos para cada pedido. Aumentado por mil pedidos, estos pasos llevan a sobrecargas de servidor, consumo pesado de recursos y una disminución significativa del desempeño. Infelizmente, el servidor no recuerda aún pedidos repetidos, pero puedes arreglar este problema con la ayuda de Varnish. Él recibe pedidos en vez de tu servidor web, mira lo que está pedido y envía pedidos a tu servidor web que envía una respuesta a Varnish que él lo pase al cliente. Parece que este procedimiento sólo diminue la velocidad del servidor, pero el aumento del desempeño ocurre cuando Varnish empieza a almacenar respuestas de back end en su caché. Como resultado, él puede rápidamente servir próximas respuestas repetidas sin la necesidad de conectar al servidor back-end. Además, Varnish usa el almacenamiento de caché en memoria que hace el proceso aún más rápido.

En cuanto a Magento 2, este caché puede ser fácilmente configurado conforme los requerimientos de la plataforma, seguindo STORES > Configuration > ADVANCED > System > Full Page Cache. Para saber más, preparamos un tutorial para ti: Cómo Configurar Varnish en Magento 2

Varnish cache in Magento 2

Preprocesamiento de CSS

CSS Preprocessing in Magento 2

Aunque CSS tiene una sintaxis poderosa, él puede fácilmente aumentarse a tamaños enormes cuando trabajas con proyectos extraordinarios. Felizmente, podemos arreglar este problema con la ayuda de preprocesadores CSS: SASS y LESS. Los dos permeten beneficios adiocionales al ofrecer una sintaxis mejorada, pero en el desarrollamiento de Magento 2 vamos a concentrar nuestra atentión en LESS. Sus características principales son:

  • Sintaxis añinada;

  • La posibilidad de definir variables y mixins;

  • Funciones operacionales y matemáticas;

  • Conexión de files múltiple

Si no sabes nada de preprocesador CSS, entonces presta atención a la documentación siguiente:

Minificación de CSS y JS

CSS and JS minification in Magento 2

En Magento 2, los procedimientos de la minificación de CSS y JS son casi las mismas que en caso de las versiones precedentes. Al combinar, comprimir y chache archivos de Javascript y CSS, puedes mejorar el desempeño de tu website de Magento 2. Entonces, es una cuestión de tiempo cuando las herramientas apropiadas sean disponibles. Además, puedes efectuar todo en la forma manual:

Magento 2 CSS and JS minification

Catalog images caching in Magento 2

Magento pre-genera las imagenes recortadas de productos en tamaños diferentes para reducir el procedimiento en cada carga de página. Thumbnails son generados durante la carga de la primera imagen y pueden ser fácilmente removidos.

Generación de Código

Code Generation in Magento 2 2

Generación de Códgio provee la posibilidad de traer programación orientada a aspectos, la programación genérica y otras técnicas complicadas de lenguajes que no las apoyan en la forma predeterminada. Como resultado, puedes mejorar el desempeño de Magento 2 y añadir características exclusivas al setup predefinido. Hay dos camino de activar la generación de código en Magento 2. En primer lugar, puedes efectuarlo sobre la marcha:

  • Utiliza un nombre significativo que sigue un modelo particular para declarar un clase.

  • Ahora, el sistema tiene que cargar automáticamente la clase. Si no puede encontrarla, entonces la clase será generada.

Infelizmente, este enfoque diminue la velocidad del sistema, por eso recomendamos que utilices la línea de comando. Al usar el comando siguiente, vas a forzar el sistema examinar el código y generar todas las clases necesarias.

Este enfoque aumenta la velocidad del sistema, entonces, es muy útil para la producción.

Con la ayuda de los dos enfoques, vas obtener clases generadas en MAGENTO_ROOT/var/generation directory.

Para saber más, puedes leer este artículo: Introducción a la generación de código en  Magento 2.

RequireJS para proveer un desempeño mejorado de  JS

How to use RequireJS within Magento 2

Hay una documentación oficial relacionado a la configuración de recursos de Java Script, pero vamos a concentrar nuestra atención en RequireJS. Siendo un cargador modular de script, esta herramienta está optimizada para ambientes JS y utilización en browser;  por eso, esto conviene mejor para Magento 2. RequireJS es utilizado para mejorar la cualidad de código y la velocidad de aplicaciones. Ya que JavScript no provee posibilidades de especificar código requerido para ejecutar un archivo, RequireJS juega un función crucial en el mejoramiento del desarrollamiento de JS: él especifica dependencias entre archivos JS y los carga en un browser. Un mejoramiento así lleva a un aumento significativo del desempeño, por eso recomendamos que leas este artículo:  Desarrollamiento Avanzado con RequireJS + Tutorial de Magento 2.

Gerenciamiento del Almacenamiento de Sesión

Session Storage Management in Magento 2

Un otro mejoramiento útil del desempeño es relacionado al gerenciamiento del almacenamiento de sesión. Puedes moverlo de archivos a base de datos o Redis. Utiliza la opción  –session-save con cualquier escritos debajo:

  • db vai a moverlo a base de datos. Es necesario escoger un almacenamiento de base de datos en el caso de base de datos agrupados (clustered).

  • redis vai a mover al backend de Redis.

  • files tienen que ser utilizados para almacenar datos de sesión en el sistema de archivos.

Recomendamos con insistencia que almacenes todo en Redis ya que Magento 2 lo apoya completamente y puedes prevenir tu tienda de la degradación del desempeño. En el caso de una largo número de usuarios, ambas base de datos y el sistema de archivos sufren una disminución dramática cuando se trata de productividad. Como resultado, tu website de Magento 2 tiene un velocidad peor llevando a una experiencia terrible de usuario. Así, Redis es la única opción confiable.

Apoyo Predefinido a CDN

CDN in Magento 2

Ya que Magento 2 también provee un apoyo a CDN, media y contenido estático pueden ser cargados de subdomains separados en servidores diferentes de redes CDN. Las opciones de CDN pueden ser configuradas aquí Stores -> Configuration -> Web.

CDN settings in Magento 2

PHP 7

Besides tons of new features and improvements introduced in PHP 7, we will get a language with completely new performance. It will be much faster than the latest available 5.X, and Magento 2 will fully support it. Thus, PHP 7 will change our understanding of how fast an ecommerce shop could be. For a deeper insight into PHP 7, check this post: PHP 7 – features, release date, rumors; and don’t forget to examine a current problem related to PHP 7 and Magento 2: String class name issue for php7.

PHP 7 in Magento 2

Magento 2 vs Magento 1

Puedes comparar el desempeño de ambas plataformas a través de MageMeter – un servizio magnífico de Inchoo. Mirando la imagen debajo, podemos ver que la última versión de Magento 2 beta con caches desactivados ya supera Magento 1 Enterprise Edition:

Why Magento 2 is better than Magento 1

Extensiones de Magento 2

Puedes ver nuestra lista de módulos de Magento 2 en el blog, pero la plataforma es todavía joven para crear un artículo separado relacionado a las extensiones del desempeño. Esperamos que los módulos más anticipados de Magento 2 van sustituir antecesores de Magento 1.X. Full Page Cache Mejorado, Minificación de JS/CSS,  servicios de CDN y muchas otras herramientas serán disponibles en breve.

Por ejemplo, la segunda versión de nuestra extensión Control for CloudFlare te permite de controlar el sistema CloudFlare directamente de tu admin de Magento 2. Ella ofrece una mejor integración así como conexiones más flexibles entre Magento 2 y CloudFlare comparando a su primera versión. Así, anticipamos que las extensiones del desempeño de Magento 2 proveerán una experiencia mejor que sus análogos actuales.

Mejoramientos Generales de Lado Servidor

Aunque la nueva versión de Magento ofrece muchos mejoramientos comparando a 1.X, hay todavía optimizaciones diferentes del desempeño. Puedes encontrarlas en nuestra Última Guía del Desempeño de Magento. Visita los enlace debajo para descubrir tutoriales apropiados.

  • OPcache es un módulo de caching de código designado para mejorar aquella parte de tu desempeño de Magento 2 que es relacionado a PHP. Él utiliza una memoria compartida para almacenar bytecode script bytecode precompilado. Así, OPcache elimina la necesidad de PHP de cargar y analizar cada pedida. Por eso, al optimizar las configuraciones OPcache, puedes dramáticamente mejorar el desempeño de tu website Magento 2. Sigue este enlace – OPcache – para obtener más optimizaciones.

  • MySQL y alternativas. MySQL apropiadamente configurado es entre los mejoramientos más importantes del desempeño de Magento 2. En primer lugar, él requiere el entendimiento de tu hardware; después, deberías saber cuáles configuraciones tienes que aplicar. Pero MySQL no es una necesidad, ya que hay dos sustituciones confiables: MariaDB y Percona. Sigue el enlace – MySQL – para aprender más.

  • New Relic. Una página lente es siempre una buena razón de abandonar una tienda online y nunca  volver más. Felizmente, hay muchas herramientas diferentes del monitoring desarrolladas para identificar problemas en el propio tiempo: por eso queríamos presentarte New Relic, porque es buen ejemplo de las mejores soluciones. Sigue el enlace para aprender más – New Relic.

Entonces, esto fue nuestra guía corta del desempeño de Magento 2. La actualizamos siempre cuando nueva información aparece. Si quieres obtener más consejos relacionados al desempeño de Magento 2, mira nuestra Cookbook. Para recibir otra información esencial, visita esta página:  Todo sobre Magento 2 en Firebear.

Si tienes cualquier preguntas del desempeño de Magento 2, no tengas dúvidas, déjanos ayudarte. Puedes escribir lo que piensas en el campo de comentarios debajo.