Aligera la carga de la página

Aligera la carga de la página gracias a tu htaccess

En el anterior artículo que puedes leer aquí comentabamos 10 acciones que puedes realizar en tu archivo .htaccess. Vamos a añadir algunas más en este artículo. Esta vez desde el punto de vista de WPO, Website Performance Optimization u Optimización del Rendimiento del Sitio Web. El enfoque será ver que acciones podemos llevar a cabo en nuestro servidor web vía .htaccess para mejorar el rendimiento. Es posible que este artículo no quede cerrado del todo y vaya adicionando contenido, pero de momento creo que tengo el suficiente probado y testeado para ir adelantando contenidos. Veamos pues!

1. Una de las acciones que debemos realizar aquí es declarar la expiración a largo plazo de aquellos elementos que no cambian, de esta manera cuando se carga la página ya no se piden al servidor. Esto nos dará más rendimiento, si la configuración realizada en el archivo httpd.conf lo permite, depende de tu hosting, podrás o no añadir directivas al módulo: mod_expires.c. A continuación explico algunas de ellas, por cierto las unidades de tiempo son las normales del idioma inglés, seconds, minutes, hours, days, month, year, os pongo algunos ejemplos:

  • ExpireActive: Activa la expiración de las cabeceras (headers) si se establece a «on».
  • ExpiresDefault: establece el tiempo de expiración por defecto.
  • ExpiresByTipe: establece la expiración del elemento atendiendo a su tipo, se declara el tipo de archivo, como se cuenta el tiempo de expiración que puede ser: «access» que hace que cuente el tiempo desde la última vez que se sirvió o bien «modification» que establece el tiempo desde la última vez que el archivo fue modificado. La fecha de modificación ha de ser uno de los atributos del archivo, los atributos de creación y última modificación suelen estar presentes.

Ejemplos:

ExpiresActive On
ExpiresDefault «access plus 1 day»
ExpiresByType image/png «access plus 1 month»
ExpiresByType image/jpg «access plus 1 month»
ExpiresByType image/jpeg «access plus 1 month»
ExpiresByType image/gif «access plus 1 month»
ExpiresByType image/ico «access plus 1 month»
ExpiresByType application/javascript «access plus 1 month»
ExpiresByType text/css «access plus 1 month»
ExpiresByType image/x-icon «access plus 1 year»
#ExpiresByType application/javascript «modification plus 2 weeks»
#ExpiresByType text/css «modification plus 14 days»

.2 Remover etags:Los etags son metadatos que se añaden a las cabeceras de las imágenes cuando son solicitadas por un navegador, si sólo tenemos un servidor conviene eliminarlas ya que añaden unos bytes innecesarios en la carga de cada imagen. Si por el contrario tenemos nuestro contenido en varios servidores, puede ser peor el remedio que la enfermedad ya que esta información identifica al servidor donde es alojada la imagen y puede que la caché deje de funcionar correctamente. Esto lo puedes hacer añadiendo lo siguiente a tu .htaccess


FileETag none

.3 Habilita la compresión: Hay dos modos de compresión una más estandar que es «mod_deflate» y otra que si está habilitada va a dar más rendimiento que es: mod_gzip. Veamos un ejemplo de la primera (recuerda consultar la documentación de la versión de Apache que tengas instalada, esto es sólo un ejemplo que puede ser no válido dependiendo de tu versión, además creo que versiones anteriores a 2.x no la implementan). También debes averiguar si la configuración de tu servidor te permite realizar esto, ya que si tienes un hosting compartido es probable que no pueda hacerse, de todos modos la más potente es la compresión Gzip esa es la que debes tratar de habilitar.

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

.4 Compresión Gzip:

mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

Para versiones de apache más antiguas 1.1, 1.3:


AddEncoding x-gzip .gz
AddEncoding x-compress .Z

De todos modos si tu hosting es compartido, seguramente no podrás hacer esto vía Apache y tendrás que realizarlo con PHP, consulta la manera de hacerlo dependiendo de la versión que tengas instalada.

¿Cómo se puede hacer esto desde PHP? Pues en mi caso dado que utilizo un hosting compartido lo hago por esta vía en concreto pongo al principio de la página lo siguiente:

ob_start("ob_gzhandler");
Al final de la página:
ob_flush();

ob_gzhandler () determina qué tipo de codificación de contenido que acepta el navegador («gzip», «deflater» o no tiene ninguno) y devolverá su salida acordemente. Si un navegador no soporta páginas comprimidas, esta función devuelve FALSO. ob_gzhandler () normalmente se utiliza para devolver un valor a la función ob_start () que es la que abre el buffer con la codificación recibida. Finalmente ob_flush() enviará los contenidos del buffer de salida (si los hay).

Bueno por ahora esto ha sido todo. Es posible que en el próximo artículo amplíe o detalle más acciones que podemos realizar desde PHP para aligerar la carga de la página, esto es tambíen WPO que no deja de ser otro factor SEO más.

Atentamente

Miguel Valero programador web y analista seo en Valencia