Guía de Rendimiento simple

Escrito por | 31 Octubre 2012 | Publicado en Nov. 2012
Optimizar y mejorar el rendimiento de los sitios web es especialmente importante cuando más del 20% de las visitas provienen de dispositivos móviles. Estos visitantes a menudo utilizan conexiones más lentas que las que su sitio web requiere para que se cargue de forma rápida. Una vez que su sitio web está terminado, publicado y todo está funcionando correctamente, puede volverse más lento a medida que el tráfico de visitantes aumenta. ¿Qué puede hacer en estos casos? ¿Cómo puede mejorar el rendimiento y optimizar Apache? Siga leyendo para encontrar las respuestas...

Esta guía está traducida del artículo de Ofer Cohen, quien a su vez la tradujo de la Guía para la Optimización para Joomla en Hebreo y su objetivo es mejorar y optimizar el rendimiento estándar de sitios web con Joomla. El nivel de la guía es para principiantes o un poco superior.
Herramientas pesadas

Hay herramientas que hacen nuestro trabajo mucho más simple y sistemático. He utilizado estas herramientas para optimizar muchos sitios web (incluyendo el de la Comunidad Israelí). Puede ver los resultados de esas herramientas en sus sitios web y obtener alertas inmediatas.

Google PageSpeed

La herramienta de Google para analizar el rendimiento es la más amigable. Existe una extensión para Firefox y para Chrome para utilizar esta herramienta.

Yahoo YSlow

La herramienta de Yahoo para el mismo propósito va dirigida a usuarios más avanzados. También está disponible como extensión para Firefox y Chrome. Resulta más impresionante y contiene más detalles y explicaciones para cada resultado en los informes.

Las reglas simples

Las herramientas mencionadas analizan su sitio web y comprueban una serie de reglas simples. Estas son las reglas básicas y las indicaciones sobre cómo puede hacer mejoras y optimizar su sitio web. Puede encontrar información para las reglas más avanzadas en las propias herramientas. Como siempre, es muy importante que haga una copia de seguridad antes de hacer cambios, especialmente si se trata de un sitio web en producción.

Gzip

Gzip es un método para comprimir las páginas enviadas al cliente desde el servidor. La compresión hace que la parte del servidor trabaje más, pero es efectiva y hace las páginas mucho menos pesadas. Active esta opción entrando en "Configuración Global" dentro de la pestaña "Servidor". En esta pestaña active la opción "Compresión Gzip de las páginas". Si la opción no está activada, su servidor Apache debería soportarla. Consulte a su proveedor de alojamiento.

Caché

Es otro método simple pero realmente efectivo para mejorar el rendimiento. Almacena en caché la información que no ha expirado en un rango de tiempo bien definido. Se puede almacenar en la parte del servidor o del cliente y se pueden controlar ambas partes.

Lado del servidor

En caso de utilizar caché en el lado del servidor, éste necesita tiempo para crear la página de internet que será enviada al cliente, es decir, el código HTML que el navegador es capaz de mostrar.

Joomla normalmente realiza muchas operaciones que son correctas para el momento de la petición actual y seguirán siendo correctas unas cuantas horas después. Si ese es el caso podemos hacer que Joomla almacene la información en caché en lugar de procesar la creación de la página entera cada vez que el cliente pide la misma página.

Es muy fácil habilitar el almacenamiento en caché en el lado del servidor. Vaya a extensiones->plugins. Busque Sistema - Caché y asegúrese de que está activado. Después vaya a Configuración Global - Sistema y active la caché como "ON - almacenamiento en caché conservacional". Esta opción es suficiente para la mayoría de sitios web. Solo debería usar la opción de caché progresivo si el rendimiento es realmente malo. El tiempo de caché depende de la frecuencia con la que se actualiza el contenido de su sitio. Por ejemplo, si el contenido de su sitio web se actualiza menos de una vez por día, puede modificar este valor y poner varias horas. De lo contrario deje el valor por defecto. Los manipuladores de caché dependerán de su proveedor de alojamiento.

Esta es mi prioridad de uso de manipuladores de caché: memcached*, memcache, APC, archivo (la primera es alta, la segunda baja). No voy a explicar cada opción, porque no es el propósito de esta guía. Busque en Google cada una para más información si tiene curiosidad.

Lado del cliente

La optimización en el lado del servidor se centra principalmente en imágenes, css y archivos Javascript, que se descargan cada vez que visita una página. Dado que esos archivos solo cambian ocasionalmente, podemos decir al cliente que los almacene en caché. Para habilitar el almacenamiento en caché del cliente, actualizaremos el archivo .htaccess (en el directorio raíz de Joomla). Esto indica cómo el cliente debería guardar la información en su caché, en lugar de descargar todo en cada visita.

Veamos cómo añadir el contenido mágico en el archivo htaccess:

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
Header set Cache-Control "max-age=10800"
</FilesMatch>
# NEVER CACHE
<FilesMatch "\.(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>

Cada directiva le indica al cliente que almacene los diferentes tipos de archivo con un rango de tiempo diferente.

La declaración sobre estas líneas utiliza una extensión de Apache llamada mod_header. Como alternativa, puede utilizar otra extensión llamada mod_expires que contiene otras directivas:

ExpiresActive On
ExpiresDefault A0
# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A604800
</FilesMatch>
# 3 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
ExpiresDefault A10800"
</FilesMatch>

Si no sabe qué extensión está instalada en su servidor pregunte a su proveedor de servicio de alojamiento.

Puede encontrar aquí más información sobre directivas de almacenamiento en caché en cliente de Apache.

Compresión

Además de la compresión por Gzip que hicimos antes, podemos comprimir más los archivos de texto, de javascript y css. Está acción comprimirá los archivos de texto enviados al navegador. Simplemente añada las siguientes directivas al mismo archivo htaccess:

# compressing of files
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Dese cuenta de que Gzip comprime HTML, mientras que este método comprimirá los "includes" del HTML (como js, css y otros). Además, este método utiliza la extensión de Apache mod_deflate. Asegúrese de que tiene esta extensión instalada.

Minimizar & fusionar

El último método que utilizaremos es la reducción de archivos CSS y Javascript. Probablemente se preguntará ¿qué es minimizar & fusionar?

Normalmente los archivos CSS y JS se muestran línea por línea, lo que hace la vida del programador más fácil y la construcción de sitios web más efectiva, y permite introducir comentarios para depurar. Sin embargo, el navegador, que es estúpido, puede utilizar el mismo archivo con solo una línea y concatenar todas las líneas a esa línea y sin comentarios (lo que es útil únicamente para seres humanos). Esta reducción disminuye el tamaño del archivo y hace que se descargue mucho más rápidamente. Probablemente se pregunte si unos pocos Kb's influirán mucho en la velocidad, pero si empieza a tener 10000 visitantes simultáneos ahorrará miles de Mb's de descarga de su servidor (compruebe el código fuente de Google por ejemplo).

Comparado con el método "minimizar", la reducción por fusión unifica todo los archivos js en uno solo y también hace lo mismo con los css. De nuevo, suena como una acción estúpida, porque el tamaño de descarga es el mismo, pero por cada petición el servidor utiliza recursos, por lo que no es lo mismo descargar un archivo que 10. Por tanto, la acción de fusión ahorra recursos y optimiza el proceso de envío de datos del servidor al cliente.

Para estas dos acciones, existe una categoría en el JED. Recuerde que esta acción es para usuarios avanzados y debería utilizarlas cuando tiene muchos visitantes simultáneos.

Artículo original: Simple Performance Guide por Ofer Cohen
Traducido por: Andoitz Brit
Miembro de: Equipo de Marketing y Difusión de Joomla! en español

Visto 5648 veces Etiquetado como Spanish, Desarrollador