Optimizar y mejorar velocidad de carga de tu web en Apache

A la hora de mejorar la velocidad de carga de tus web en Apache hay 3 puntos básicos que debes tener activados.

  1. Habilitar la compresión gzip para reducir el tamaño de los archivos que van del servidor al cliente.
  2. Habilitar el «expires headers» que no es más que decirle al navegador si debe volver a descargarse un elemento estático o le vale el que ya tiene en caché.
  3. Habilitar el «keep alive», que es mantener una conexión abierta entre el cliente y servidor y poder hacer a través de ella varias peticiones.

Opcionalmente también puedes instalar y habilitar el módulo pagespeed para terminar de optimizar tu servidor.

Con esto, si pasas un test de velocidad de carga tipo http://gtmetrix.com/ pasarás de tener:

Test velocidad web sin optimizar Apache
Test velocidad sin optimizar Apache

 

A tener algo un poco más decente:

Test velocidad web optimización básica en Apache
Test velocidad optimización básica en Apache

 

Las pruebas las he hecho con un Prestashop tal y como viene de fábrica. Pero sirve para cualquier tipo de página (también WordPress).

Para esto lo único que hay que hacer es configurar tres archivos en tu servidor. Yo uso un VPS por lo que lo he hecho a nivel de configuración global del servidor. Si no tienes acceso a tu servidor, pero sí al .htaccess, existe lo equivalente para estas configuraciones.

1. Habilitar la compresión gzip:

Creamos y editamos el archivo /etc/httpd/conf.d/deflate.conf (esta es la ruta en Centos, adáptala a tu distribución)

<IfModule mod_deflate.c>
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE text/javascript
 AddOutputFilterByType DEFLATE image/svg+xml
 AddOutputFilterByType DEFLATE image/x-icon
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
 
 DeflateCompressionLevel 9
 
# Browser specific settings
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 BrowserMatch \bOpera !no-gzip 

# Setup custom deflate log
 DeflateFilterNote Input instream
 DeflateFilterNote Output outstream
 DeflateFilterNote Ratio ratio
 
 LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
# Example of log file
 CustomLog logs/deflate_log DEFLATE
</IfModule>

2. Habilitar «expires headers»:

Igualmente creamos y editamos /etc/httpd/conf.d/expire.conf

<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresByType image/jpg "access plus 60 days"
 ExpiresByType image/png "access plus 60 days"
 ExpiresByType image/gif "access plus 60 days"
 ExpiresByType image/jpeg "access plus 60 days"
 ExpiresByType text/css "access plus 1 month"
 ExpiresByType image/x-icon "access plus 1 month"
 ExpiresByType application/pdf "access plus 1 month"
 ExpiresByType audio/x-wav "access plus 1 month"
 ExpiresByType audio/mpeg "access plus 1 month"
 ExpiresByType video/mpeg "access plus 1 month"
 ExpiresByType video/mp4 "access plus 1 month"
 ExpiresByType video/quicktime "access plus 1 month"
 ExpiresByType video/x-ms-wmv "access plus 1 month"
 ExpiresByType application/x-shockwave-flash "access 1 month"
 ExpiresByType text/javascript "access plus 1 week"
 ExpiresByType application/x-javascript "access plus 1 week"
 ExpiresByType application/javascript "access plus 1 week"
</IfModule>


3. Habilitar «keep alive»:

Crear y editar /etc/httpd/conf.d/keep-alive.conf

KeepAlive On

Fuente: http://www.linux-faqs.info/apache/optimize-website-speed-with-mod-expire-and-mod-deflate

 

Si te has fijado en las imágenes, el tamaño que se descarga se ha reducido considerablemente (aproximadamente un 40%), pero el número de llamadas (http request) no ha bajado, siguen siendo 83.
Esto se puede mejorar básicamente combinando archivos javascript y css para que al unirlos se descarguen todos juntos y comprimidos.
Dependiendo de tu entorno (wordpress, joomla, etc) existen plugins que lo hacen. Pero hay una manera más cómoda y que te vale para todos los dominios que tengas en el servidor. Además de cachear el contenido y aliviar de esta manera al servidor.

Es el famoso módulo pagespeed

En Centos es muy fácil instalar y usar con apache:

Añadir el repositorio a yum:

# nano /etc/yum.repos.d/google-mode-pagespeed.repo
[google-mod-pagespeed]
name=google-mod-pagespeed
baseurl=http://dl.google.com/linux/mod-pagespeed/rpm/stable/$basearch
enabled=1
gpgcheck=0

Instalarlo:

# yum install mod-pagespeed

Y ya está. Reinicias Apache

# service httpd restart

Si quieres cambiar alguna configuración lo puedes hacer en el archivo /etc/httpd/conf.d/pagespeed.conf

Si, por ejemplo, quieres deshabilitar algún dominio en particular para que no esté con pagespeed, añades a ese archivo una línea como esta:

ModPagespeedDisallow http://www.dominio-sin-pagespeed.com/*

El resultado de esta optimización:

Test velocidad con pagespeed habilitado
Test velocidad con pagespeed habilitado

Como se observa, las peticiones http han bajado de 83 a 42, casi la mitad… Y el tamaño también ha bajado otro poco, a prácticamente la mitad que el inicial.

Fuente: http://tecadmin.net/installing-mod_pagespeed-module-apache/#

 

Votar
[Total: 5 Media 3.6]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *