Según las últimas investigaciones, el 64% de los compradores online descontentos dijeron que eran menos propensos a volver a visitar a una tienda online con un alto tiempo de carga mientras que el 62% eran menos propensos a comprar en el sitio de nuevo y el 48% comprarían a un competidor.
Estas estadísticas siempre dejan perplejos a los desarrolladores puesto que por una parte, el propietario del sitio web quiere que la aplicación sea multifuncional y universal y por otra parte no debe ser lenta. Y el problema es siempre cómo hacer que una extensión sólida funcione lo más rápido posible.
La optimización del rendimiento es una buena solución en esta situación. Cuando se optimiza un sitio web, se debe proporcionar dos factores:
- la velocidad de carga de las páginas aceptable
- la velocidad de carga de las páginas aceptable, cuando N personas usan la misma aplicación al mismo tiempo.
El consejo básico sobre el tiempo de respuesta que fue más o menos igual durante cuarenta años:
“0,1 segundo es el límite, cuando el usuario sienta que el sistema reacciona instantáneamente, lo que significa que ningun feedback es necesario, excepto la visualizacion del resultado.
1,0 segundo es el límite, cuando el flujo de pensamiento de los usuarios no se interrumpe, a pesar de que el usuario nota la demora. Normalmente, ningun feedback especial es necesario durante los retrasos de más de 0,1 segundo, pero menos de 1,0 segundo, pero el usuario pierde la sensación de operar directamente en los datos.
10 segundos es el límite, cuando la atención del usuario se fijen en el diálogo. Para las demoras más largas, los usuarios querrán realizar otras tareas mientras están esperando cuando la carga termina, así hay que darles el feedback cuando el ordenador espera hacerlo. La información durante la demora es especialmente importante si es probable que el tiempo de respuesta sea muy variable, ya que los usuarios no sabrán qué esperar.”
Tomando en cuenta toda esta información, vamos a tratar de ofrecer la velocidad de carga de las páginas de 0,1 - 1 segundo con la carga de 20 peticiones competitivos con la ayuda de la optimización de rendimiento de Magento.
Lo que tenemos
Servidor:
- CPU: Intel® Xeon® CPU X3320 @ 2.50GHz
- Memoria: 4GB
- Disco duro: 1HDD, sin RAID
Magento CE 1.7.0.0
Lo que debemos hacer
1. Seleccionar una herramienta para medir el rendimiento del sitio web de Magento
- http_load
http_load pone en marcha múltiples http fetches en paralelo, para probar el rendimiento de un servidor web. Se ejecuta en un proceso único, por eso no empantana la máquina. Puede ser configurado para hacer https fetches también.
- Herramienta de benchmarking del servidor HTTP Apache
Es la herramienta para benchmarking de su servidor Apache del Protocolo de Transferencia de Hipertexto. Está diseñado para darse una idea de cómo su actual instalación de Apache se desempeña. Especialmente muestra el número de peticiones por segundo que su instalación de Apache es capaz de servir.
- Siege
Siege es la utilidad para hacer benchmark y pruebas de carga. Fue diseñado para permitir a los desarrolladores web medir su código bajo coacción, para ver cómo se hará frente a la carga en la internet. Fue diseñado para permitir a los desarrolladores web medir su código bajo coacción, para ver cómo los recursos se usan durante la carga en la internet. Siege soporta la autenticación básica, los cookies, los protocolos HTTP y HTTPS. Permite a su usuario conectar a un servidor web con un número configurable de los navegadores web simulados.
- Apache JMeter
Apache JMeter es un software de código abierto, un 100% puro Java aplicación de escritorio diseñada para cargar el comportamiento de pruebas funcionales y medir el desempeño. Puede ser utilizado para probar el rendimiento, tanto en recursos estáticos como dinámicos. Apache JMeter puede ser utilizado para simular una carga pesada en un servidor, la red o un objeto para poner a prueba su resistencia o para analizar el rendimiento general en diferentes tipos de carga. Se puede usarlo para hacer un análisis gráfico de rendimiento o para probar su servidor/script/comportamiento del objeto con carga pesada concurrente.
2. Seleccionar sistema operativo para el servidor
Aquí puede seleccionar lo que quiere o lo que ofrece su proveedor de hosting:
- BSD: FreeBSD, OpenSD, etc.
- Debian: Debian, Ubuntu
- Gentoo, Slackware
- RHEL
- Apache + mod_php
3. Seleccionar servidor web con PHP
Es el entorno de aplicación más popular
- Nginx + Apache + mod_php
Nginx como un proxy antes de Apache no tiene influencia sobre la velocidad de generación de páginas, pero da el aumento de velocidad de carga y la economía de los recursos del sistema - Nginx + php-fpm
Esta variante es menos popular ya que ninguno de los paneles de control de alojamiento web como cPanel trabajan con Nginx sin defecto. Pero nuestras comprobaciones demostraron que precisamente este entorno fue de 30% más rápido que Apache
Para evitar muchos errores graves en la configuración correcta del servidor web, sea atento con la configuración de Nginx y no se olvide de:
- Prohibir el acceso a los catálogos de Magento
location/app/{deny all;}
location ~ Ʌ.ht {deny all;}
location /.svn/ {deny all;}
- Deshabilitar el registro donde no es necesario
location/media/catalog/{
access_log off;
}
location /js/ {
access_log off;
}
- Habilitar la compresión para JS y CSS
location/media/js/{
gzip on;
gzip_min_length 1000;
gzip_disable “MSIE[1-6]\.”;
expires 5d;
access_log off;
}
- Aumentar el tiempo de espera de FastCGI
fastcgi_read_timeout
4. Seleccionar PHP 5.3. * o PHP 5.4. *
Hay 2 evidentes ventajas de pasar a PHP 5.4.*:
- es más rápido;
- después se puede utilizar las nuevas construcciones lingüísticas.
Pero no hay que olvidarse de la desventaja que puede encontrar:
- problemas al migrar a la nueva versión
Los ensayos mostraron los siguientes resultados:
5. Seleccionar un sistema de opcode cache
Código abierto
- APC
- Xcache
- eAccelerator
Código cerrado
- IonCube
- Zend Server
Como se puede ver abajo, el uso de opcode cache da el aumento de velocidad de alrededor del 70%:
6. Cambiar el número de los procesos hijos en PHP-FPM dependiendo de su hardware
7. Mover sesiones de los usuarios a memcached
8. Mover caché a APC o memcached
9. Poner los valores más altos en la configuración de PHP - realpath_cache_size y realpath_cache_ttl
Vamos a resumir lo que tenemos después de todos estos pasos en la optimización:
Como ve, la optimización del entorno del servidor produjo la reducción de la velocidad de renderizado en 3.5 veces, así como la baja del precio del hardware requerido.
aheadWorks Co. es un proveedor líder en el mercado de extensiones y temas de Magento, y servicios personalizados de desarrollo con una amplia cartera con las mejores soluciones en su clase para empresas de comercio electrónico.