Consejos para optimizar la velocidad del sitio, ¿por dónde empezar?

16

Me han pedido que intente encontrar una solución para el tiempo de carga lento de nuestro sitio de Magento. Hice una prueba de Yslow y los mayores delincuentes parecen ser

  • Hacer menos solicitudes HTTP
  • Use un CDN
  • Agregar encabezados caduca
  • Poner Javascript en la parte inferior
  • Minify jS y CSS
  • Configurar etiquetas ET
  • Reduce las búsquedas de DNS
  • Evite el filtro AlphaImageLoader

Como gerente de comercio electrónico, estoy buscando consejos sobre lo que puedo hacer desde mi rol dentro del administrador de Magento, las herramientas para webmasters, etc. y lo que puedo instruir a un desarrollador para que haga que nuestro sitio cumpla con el cumplimiento y sea notablemente más rápido.

También he estado buscando un complemento llamado GTMetrix que parece hacer mucho de esto por usted dentro del administrador (combinar hojas CSS, optimizar imágenes, etc.), ¿alguien tiene alguna experiencia con esto? Por lo general, trato de evitar demasiadas extensiones que llegan tan profundamente a las funciones esenciales, pero parece que podría ser una solución. http://gtmetrix.com/magento-optimization-guide.html

Su consejo sería muy apreciado, ya que estoy teniendo dificultades para saber dónde comenzar a tener el mejor impacto.

Gracias por adelantado.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Brandon
fuente
Eche un vistazo a magento.stackexchange.com/questions/460/…
David Manners

Respuestas:

27

(copiado de mi propio blog en https://www.gui.do/post/101-ways-to-speed-up-your-magento-e-commerce-website )

A) Entorno de alojamiento / Consejos generales

  1. Obtenga un servidor dedicado.
  2. Aloje su sitio en el país donde están sus clientes.
  3. No aloje archivos en su servidor web que no utilice, grandes o pequeños.
  4. Pase a MySQL Admin y seleccione todas las tablas y repare y luego optimícelas.
  5. Use un acelerador PHP como APC, ZendOptimizer + o Xcache.
  6. Solo instale los módulos Apache necesarios.
  7. Use Apache mod_expires y asegúrese de establecer cuánto tiempo deben almacenarse en caché los archivos. Puede usar el siguiente ejemplo para su configuración de Apache virtualhost: # Active Expires y establezca el valor predeterminado en 0 ExpiresActive On ExpiresDefault A0 # Configure el almacenamiento en caché en archivos multimedia durante 1 año (¿para siempre?) ExpiresDefault A29030400 El encabezado agrega Cache-Control "public" # Configurar el almacenamiento en caché en archivos multimedia durante 2 semanas ExpiresDefault A1209600 Encabezado agregar Cache-Control "público" # Configurar el almacenamiento en caché de 1 semana en archivos comúnmente actualizados ExpiresDefault A604800 Encabezado agregar Cache-Control "proxy-revalidate"
  8. Habilite la compresión Gzip en htaccess .
  9. Comprima la salida, use zlib.output_compression o mod_deflate.
  10. Use una red de entrega de contenido (CDN) para la transferencia paralela de contenido estático. Hay una extensión de Magento que puede ayudarlo a hacer esto con imágenes de categoría y producto: One Pica Image CDN . Pero ... (ver el siguiente consejo).
  11. No utilice demasiadas fuentes externas diferentes (para imágenes, iframes, feeds (twitter / facebook), etc.) porque cada búsqueda de DNS lleva tiempo adicional y crea una dependencia adicional (en algún servidor de terceros) para que su sitio se cargue correctamente .
  12. Habilite Apache KeepAlives: asegúrese de que su configuración de Apache tenga KeepAlives habilitado. KeepAlives es un truco en el que se pueden canalizar múltiples solicitudes HTTP a través de una única conexión TCP. La configuración de cada conexión TCP conlleva un tiempo adicional, esto puede reducir significativamente el tiempo que lleva descargar todos los archivos (HTML, JavaScript, imágenes) de un sitio web. Más información en Apache.org . Sin embargo, tenga cuidado, ¡he escuchado de algunos que esto crea (una gran cantidad) de carga adicional en el servidor y podría bloquear el servidor en momentos de mucho tráfico!
  13. Minimiza las redirecciones.
  14. Haga que su salida sea compatible con W3C. Los errores ralentizan el navegador.
  15. Cambie Apache por NginX o Litespeed. Si esto no es una opción, vaya a Zend Server (idealmente la versión no CE para que pueda usar el almacenamiento en caché de página completa).
  16. Apague o al menos reduzca el registro del servidor web (reduce las escrituras en disco).
    • Deshabilitar el registro de tiempo de acceso. Magento Wiki : para servidores Linux, si tiene habilitado el registro de tiempo de acceso en cualquiera de sus particiones mysql, servidor web o caché, intente desactivarlo para aumentar el rendimiento. Si está usando ext3 o reiserfs, puede haber métodos de escritura de diario más rápidos que puede usar. Para más información ver Linux.com .
  17. Compile MySQL desde la fuente en lugar del administrador de paquetes de su sistema operativo.
  18. Actualice siempre a la última versión de Magento. No solo obtendrá más funciones y correcciones de errores y seguridad, sino que con cada actualización Magento funciona mejor.
  19. Tamaño del caché de consultas: Blog de Magento : modifique la configuración de su servidor MySQL para aprovechar mejor la RAM de su servidor. La mayoría de las distribuciones de Linux proporcionan un paquete MySQL conservador listo para usar para garantizar que se ejecute en una amplia gama de configuraciones de hardware. Si tiene suficiente RAM (p. Ej., 1 gb o más), puede intentar ajustar la configuración. A continuación, se muestra un ejemplo de my.cnf, aunque deberá consultar la documentación de MySQL para obtener una lista completa de las directivas de configuración y las configuraciones recomendadas.
  20. configure 'php_value memory_limit 128M' en su configuración de php o agréguelo a su archivo .htaccess para asegurarse de que no se quede sin memoria.
  21. Utilice un sistema de archivos basado en memoria para datos dinámicos. Si almacena datos dinámicos ( var / cache , var / session ) en RAMdisk o tmpfs, la E / S del disco disminuye.
  22. Cambiar realpath_cache_size en php.ini.
    realpath_cache_size = 1M ( cuidado , esto es  por proceso de apache )    realpath_cache_ttl=86400 (ok for production site) 
  23. Memcache (para el hardcore) está documentado en http://www.magentocommerce.com/boards/viewthread/9037/ y más consejos de http://alexle.net/archives/275 para ponerlo en funcionamiento.
  24. Deshabilite la directiva PHP open_basedir. Lea este .
  25. Elimine los análisis de estructura de directorios para archivos .htaccess.
  26. Innodb_buffer_pool_size recomendado.
    • Servidor web y db combinado, 6 GB de RAM:  2-3 GB
    • Servidor de base de datos dedicado, 6 GB de RAM: 5 GB
    • Servidor de base de datos dedicado, 12 GB de RAM: 10 GB
  27. Caché de consultas: query_cache_size: 64MB, query_cache_limit: 2MB
  28. Utilice un servidor de back-end separado para manejar usuarios administrativos, procesar la actividad de back-end (cron), generar previamente el almacenamiento en caché de la página completa y manejar consultas de medios.
  29. Use múltiples nodos web (servidores frontend) para manejar la navegación y el pago.
  30. Utilice el almacenamiento en caché de proxy inverso Varnish, explicación de Magento de @alistairstead: Barnice su tienda Magento, ¡vuele!
  31. Si tiene un sitio popular que está muy rastreado por motores de búsqueda, puede guardar algunos recursos modificando su robots.txt.
  32. Pruebe algunas de estas extensiones de caché:
    • http://www.artio.net/magento-extensions/m-turbo-accelerator
    • http://www.aitoc.com/en/magento_booster.html
    • http://www.tinybrick.com/magento-modules/performance.html/
  33. Instale el complemento Yireo DisableLog. Impide que Magento escriba toneladas de cosas en su base de datos, lo que es inútil cuando ya está usando algo como Google Analytics.

B) plantilla

  1. Optimice todas sus imágenes (de plantilla): la mayoría, si no todas, deben estar al menos por debajo de 10 kb.
    • Recorta el espacio en blanco con tu editor de imágenes.
    • Use archivos PNG8 o ​​GIF en lugar de archivos JPEG y no use transparencia (dependiendo de cuántos colores use y qué tan grande sea la imagen, pero pruébelo usted mismo).
    • Escalar imágenes: cree imágenes en las dimensiones que necesita y no cambie su tamaño en el editor.
    • Use la compresión de imágenes (puede usar smush.it para hacerlo por usted).
    • Use CSS Sprites, incluso hay generadores CSS Sprite .
  2. Minifique su CSS, elimine el código no utilizado .
  3. Minimiza el uso de Javascript.
  4. Use una plantilla ligera como base para su plantilla. Por ejemplo: el tema Yoast Blank SEO .
  5. Especificar dimensiones de imagen .
  6. Use la memoria caché de bloque y la salida HTML en sus extensiones.
  7. Aplique Javascript Lazy Loader para el prototipo .

C) Configuración de Magento

  1. Desinstale cualquier extensión que no use realmente.
  2. Deshabilite los módulos que no usa:  Sistema -> Configuración -> Avanzado -> Avanzado. ! [ingrese la descripción de la imagen aquí] [1]
  3. Habilite todas las cachés de Magento: Sistema -> Gestión de caché.  
  4. Use un Rastreador de estadísticas fuera del sitio como Google Analytics y no uno en el sitio. La mayor parte de esto usará Javascript, aloje el Javascript usted mismo.
  5. Combine archivos Javascript y Combine CSS : Sistema -> Configuración -> Avanzado -> Desarrollador -> 'Configuración de Javascript' y 'Configuración de CSS' . También puede considerar el uso de extensiones para hacer esto, como la extensión Fooman Speedster , lo que funcione mejor para usted.
  6. Pruebe algunas de las extensiones de rendimiento de Magento.
  7. Habilite el Catálogo plano de Magento, solo útil para catálogos muy grandes para sentir las mejoras.
  8. No use la navegación por capas si realmente no la necesita, requiere muchos recursos.
  9. Utilice la función de compilación de Magento. Se informa que le brinda un aumento del rendimiento del 25% -50%: Sistema> Herramientas> Compilación. Editar: Yoav Kutner (CTO de Magento), hágamelo saber que " en versiones posteriores desde que optimizamos el catálogo EAV, la compilación de Magento no es realmente necesaria si tiene un almacenamiento en caché de código de bytes y si está configurado correctamente ".
  10. Utilice el almacenamiento de sesión correcto, elija el sistema de archivos o la base de datos (durante la configuración). La mayoría de las instalaciones deberían usar el "sistema de archivos" porque es más rápido y no hace que la base de datos crezca. Pero si su sitio se ejecutará en varios servidores, debe seleccionar "base de datos" para que los datos de sesión de un usuario estén disponibles independientemente del servidor desde el que se atiende su solicitud. Más información sobre esto de Ashley Schroder en Magebase.com.
  11. Limite el número de productos en una página de resumen de productos.
  12. Establezca solo las propiedades de la interfaz de atributos en 'Sí' que realmente va a usar. Establezca todos los demás en 'No'. No lo use en búsqueda rápida, comparación de búsqueda avanzada, etc., etc.: Catálogo -> Atributos -> Administrar atributos -> Propiedades frontend.  
  13. Deshabilite el registro de Magento : Sistema -> Configuración -> Avanzado -> Desarrollador -> Configuración de registro (el valor predeterminado está deshabilitado).  

Consejo solo para empresas:

  • Deshabilite Enterprise_CatalogEvent. Vaya a Admin -> Sistema -> Configuración -> Catálogo -> Eventos de catálogo. Luego, desea desactivar la configuración de "Habilitar funcionalidad de eventos de catálogo" y "Habilitar widget de eventos de catálogo".
  • Habilite la búsqueda de Solr, es más rápido en comparación con la configuración predeterminada, especialmente cuando tiene muchos productos (> 10k).
  • Habilitar el almacenamiento en caché de página completa.

D) Pruebas de velocidad, análisis, monitoreo.

  1. Pruebe su sitio Magento con Magento Speed ​​Test (por Ashley Schroder)
  2. Ejecute su sitio a través de websiteoptimization.com.
  3. Use la extensión Google Page Speed ​​Firefox o Yahoo Yslow para obtener algunos consejos de Google y Yahoo.
  4. Implemente las mediciones de Google Speed ​​en Analytics: mida el tiempo de carga de la página con el informe de Site Speed ​​Analytics
  5. Monitoreo de velocidad y alertas de tiempo de inactividad.
    • Mon.itor.us
    • Pingdom

Consejos de bonificación

(porque en realidad no acelera el frontend sino solo el backend):

  • Use K-Meleon si está en Windows para su trabajo de administrador general. Hace que el pesado back-end JS de Magento sea significativamente más rápido que cualquier otro navegador.
  • Use la extensión GoogleGears de Yireo.com para almacenar en caché los archivos estáticos localmente.
  • Use una aplicación local de pc / mac para administrar Magento (como  mag-manager.com ).

Me doy cuenta de que probablemente no puedas usar todos los consejos anteriores, pero no se trata de usarlos todos, y a veces simplemente eliges dar prioridad a una funcionalidad sobre el rendimiento, y eso está bien. Si solo puede aplicar algunos de ellos, seguirá aumentando la velocidad y la experiencia del usuario. Y recuerde: debido a que la velocidad depende de muchas variables, algunos de los consejos pueden no tener un impacto en su sitio web, mientras que otros pueden tener un gran impacto. Por lo tanto, siempre pruebe el impacto de cada paso que tome y tome las medidas correspondientes.

Guido Jansen
fuente
4
  1. Imágenes: he visto muchos casos en los que la persona que carga imágenes (productos, páginas CMS, etc.) no está capacitada para optimizar el tamaño de las imágenes. Hay muchos artículos disponibles en línea, pero muchos de ellos son de sentido común.

    • No uses imágenes para el texto.
    • Use JPEG / GIF / PNG adecuadamente (es decir, generalmente no use PNG para imágenes fotográficas)
    • Use sprites para imágenes pequeñas, ya que puede empaquetar un montón de imágenes pequeñas en un archivo, proporcionándole solo una solicitud HTTP en lugar de docenas o más. También puede considerar los iconos de fuente.
    • Guarde las imágenes con la calidad más baja posible mientras permanece visiblemente aceptable. Creo que el punto óptimo suele ser de 50-60 de calidad para JPEG. A veces, una calidad de 20 es perfectamente aceptable, y puede reducir una imagen de 300 Kb a 30 Kb. Eso es un gran ahorro.
    • Considere la carga diferida en páginas pesadas de imágenes.
  2. Solicitudes HTTP: otro gran delincuente. A veces, simplemente no hay mucho que pueda hacer para reducir las solicitudes, pero siempre debe intentar que esto sea lo más bajo posible. Magento proporciona algunas características para ayudar con esto fuera de la caja (fusionando CSS / JS).

  3. Búsquedas DNS adicionales: diría que esto es lo más importante para el proceso de compra / pago. Muchas tiendas tendrán varias integraciones de API que llaman a servicios. Si bien no puede hacer mucho para que una respuesta API de un proveedor de envío sea mucho más rápida, al menos puede identificar servicios lentos que de otro modo no serían evidentes. Piense en el tiempo adicional que podría tomar un pago si realiza llamadas a UPS, FedEx, USPS, proveedores de tasas impositivas, proveedores de pagos, sitios afiliados, etc.

  4. Otros factores: algunos de los otros factores mencionados en su informe probablemente no tendrán un impacto tan grande como las imágenes y las solicitudes HTTP. Ciertamente puede valer la pena minimizar CSS y Javascript, pero las ganancias del mundo real solo son realmente notables en el agregado a largo plazo. Además, un CDN realmente puede ayudar, especialmente si está ofreciendo productos descargables.


Creo que a menudo se le da demasiada importancia al alojamiento solo. En el pasado, me encargaron realizar ciertos ajustes de servidor para que los sitios mejoren la velocidad, solo para descubrir que la página de inicio está cargando 20Mb de activos.

Del mismo modo, el libro blanco de Magento sobre el rendimiento del servidor no será de ninguna utilidad si su sitio está construido descuidado con demasiada hinchazón. Si su objetivo es mejorar la velocidad de su sitio, el primer paso debe ser mirar las páginas para encontrar ineficiencias. Solo después de que haya determinado que su sitio es tan simple como quiere, debería comenzar a considerar la actualización de su alojamiento.

Para el registro, un sitio que administro ha estado usando un SIP-200 en Nexcess durante aproximadamente cinco años y recibe un promedio de 5000 visitas al día (es estacional, por lo que alcanza un pico de más de 10k a fines de la primavera / principios del otoño). No tengo absolutamente ninguna queja sobre este grado de servidor para este sitio, y estamos ejecutando una versión bastante común de Magento CE con miles de productos en docenas de categorías.

pspahn
fuente
2

Las imágenes son un gran problema en Internet, casi un problema tan grande como JavaScript. Lo primero que debe hacer es optimizar sus imágenes.

  • Configurar una red de entrega de contenido
  • Optimiza tus imágenes
  • Use una imagen LazyLoader

Ahora en sus archivos Javascript :

  • Comprimirlos y combinarlos
  • Elimine recargas de página adicionales mediante el uso de más ajax
  • Suelta tus archivos JS en el pie de página
  • Cargue sus archivos JS desde un dominio diferente

Caché como loco

  • Habilite el almacenamiento en caché de MySql y aumente el tamaño del grupo de memoria
  • Habilite el almacenamiento en caché de APC para que PHP no tenga que volver a aprender cada vez
  • Habilite el almacenamiento en caché de página completa de Magento y utilice el almacenamiento en caché de Apache
  • Habilite GZIP para entregar sus archivos al usuario más rápido.
  • Habilite los encabezados de caducidad adecuados para que sus usuarios también estén almacenando en caché

Magento también tiene varios mecanismos internos de almacenamiento en caché:

  • Habilite el almacenamiento en caché obvio de Magento
  • Habilitar la compresión y compilación CSS y JS desde el administrador
  • Habilite el catálogo y los productos Flat para acelerar las llamadas mysql
  • Habilite el compilador de Magento para acelerar el autocargador de PHP

Si desea más detalles, he extraído la información de esta base de conocimiento .

Consultor de comercio electrónico
fuente
0

Esto es lo que sugeriría para acelerar el sitio de Magento:

  1. Realice auditorías de extensiones de terceros y auditorías TTFB. Algunos complementos personalizados ralentizan Magento. Obtenga una lista de todos los módulos de terceros y desactívelos uno por uno. Velocidad de referencia con www.webpagetest.org. Cuando identifique a un abusador, comuníquese con su proveedor para avisarle. Para ejecutar la auditoría TTFB, instale un programa gratuito xhprof o use NewRelic .

  2. Averigüe si sus recursos de alojamiento son suficientes para ejecutar Magento. Instale una copia nueva de Magento de la misma versión en su hosting. Compare su velocidad con el sitio en vivo. Si es significativamente más rápido que su sitio, entonces su alojamiento está bien. Si es tan lento como su sitio en vivo, entonces su alojamiento no es bueno.

  3. Realizar varias optimizaciones frontend. Estos incluyen: optimización de imágenes, compresión gzip, minificación CSS / JS. Puede obtener un informe de lo que debe hacer ejecutando su sitio contra Google PageSpeed ​​Insights .

Tomado de mi artículo .

Konstantin Gerasimov
fuente
¿Cuál es la mejor manera de hacer auditorías de extensiones de terceros? Gracias. @Konstantin Gerasimov
Gema
0
  • Debe centrarse tanto en optimizar su sitio web (estructura, CSS, imágenes, etc.) como en encontrar un host realmente rápido.

  • Le sugiero que busque un host que proporcione almacenamiento SSD y Cloudflare CDN y qué servicios de alojamiento estén especialmente optimizados para un sitio web basado en Magento.

  • Actualmente estoy usando el llamado plan "Popular" para mi sitio web y está haciendo un gran trabajo.

  • Aquí están sus especificaciones completas: https://www.bgocloud.com/hosting/websites-cpanel/popular-plan .

Si cree que estas características no son adecuadas para usted, puede consultar los otros planes o la página de servidores dedicados.

James Allan
fuente
-1

He encontrado que lo más importante en cuanto a velocidad del sitio y magento es su servidor. ¿Estás en un host dedicado? Tienes que ser. Especialmente uno con unidades SSD. La parte más lenta de Magento es cómo procesa PHP y renderiza la página, y la única forma de combatirlo es con un mejor servidor. También un caché de página completa, prueba Lesti FPC.

usuario4517
fuente
Hola gracias por tu respuesta Tenía la sensación de que la configuración de nuestro servidor podría no ser lo que necesitamos, pero soy nuevo aquí y solo estoy aprendiendo su sistema y nunca antes tuve que profundizar demasiado en el lado administrativo del sistema. Desenterré nuestra última factura (suponiendo que este sea el servidor con el que estamos ejecutando Magento): 18636 Dual Xeon E5-2609 (E52609) RAM: Disco duro de 16 GB 1: Disco duro SATA de 500 GB 2: Disco duro SATA de 500 GB 3: 64 GB Samsung 830 Unidad de disco duro SSD 4: ninguna Controladora de unidad de disco duro: Controlador integrado
Brandon
No puedo estar de acuerdo con esta respuesta. Si su sitio está empantanado por imágenes grandes, toneladas de solicitudes HTTP y solicitudes de servicios de terceros (UPS, búsquedas de impuestos, etc.), el mejor host dedicado del mundo no hará nada por usted. Para comenzar, haga que el sitio se ejecute correctamente y luego considere actualizar el alojamiento si corresponde.
pspahn
FYI Brandon. El Samsung 830 es una unidad de disco diseñada para computadoras domésticas, no para servidores. No parece que su servidor sea un servidor en absoluto.
choco-loo
-1

Existe la respuesta larga y la respuesta corta, ya que Guido ya señaló que estos son los pasos que debe seguir para su configuración. Tendrá que encontrar algún recurso competente para ejecutar todas las combinaciones para encontrar la mejor opción, lleva bastante tiempo, pero el proceso estándar que los sitios de Magento necesitan ejecutar. También hay una respuesta breve, pero trabajamos con una incubadora y utilizan técnicas empresariales principalmente para plataformas de gama alta, sin embargo, la portamos a Magento, pero no será relevante aquí. Tendrá que encontrar el equilibrio exacto entre hardware, fpc, almacenamiento en caché, requisitos comerciales, el único problema será una vez que haya realizado el ejercicio si cambia materialmente cualquier cosa que necesite volver a ejecutar.

Acornia
fuente
-1

O bien, omita todo eso, use la misma pila de tecnología que Etsy, el mismo hosting que Very con múltiples nodos, omita el fpc, cerca de fpc ttfb, cargas dinámicas de 1-2s, y use Pagespeed todo junto para darle As en todos los ámbitos. . Ahora, si tiene más codificadores entusiastas y extensiones agregadas, hay límites. Depende de si desea tomar la ruta de la tecnología y tiene que pasar por todo hasta el enésimo grado en el que los programadores no estarán de acuerdo con el negocio, o si toma el punto de vista comercial y encuentra la mejor solución, independientemente de las protestas tecnológicas que a menudo resultan en menos técnicas trabajo.

CreativeWest
fuente