Apache mod_expire. Expiración de contenidos web

Otra funcionalidad de apache. Se trata de mod_expire. Con mod_expire, podemos expresar el tiempo de expiración de un tipo de archivo (css,gif,png…etc). De esta manera, avisamos al navegador que ese contenido no va a cambiar en un determinado tiempo y no hace falta que lo vuelva a descargar.

En las instalaciones típicas de Apache 2.0.X el mod_expire, al igual que una legión de modulos, ya viene compilado y cargado en la configuración por defecto. Si tenemos dudas de si está o no, lo podemos comprobar con la extensión de Mozilla Firebug, YSlow. Utilizando esta extensión vemos la fecha de expiración de un archivo en concreto.

Primero, compilamos el modulo sino lo tenemos por defecto, utilizando apxs. Si no tenemos este binario, podemos instalarlo con

# yum install httpd-devel

Necesitamos el fichero .c del mod_expires, lo podemos bajar o copiar del paquete de httpd. Una vez lo tengamos todo, ejecutamos:

# /usr/local/apache/bin/apxs -i -a -c
/root/httpd-2.2.6/modules/metadata/mod_expires.c

Se deja el módulo en la ubicación por defecto

# /usr/local/modules/mod_expires.so

Comprobamos en el fichero de configuración de apache, que se ha cargado la línea de configuración adecuada:

# LoadModule expires_module modules/mod_expires.so

Salvamos los cambios y reiniciamos apache

# /etc/init.d/httpd restart

Podemos utilizar mod_expires en diferentes contextos, pero seguiremos el ejemplo encontrado en Yukei.net, por comodidad, más que nada. Nos referimos a utilizar htaccess, con lo cual, explícitamente necesitamos mod_rewrite.

Vamos al directorio donde tenemos el contenido que queremos controlar por expiración y creamos el htaccess

# touch .htaccess

#joe .htaccess

Añadimos

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
</IfModule>

o bien

Añadimos esto en el fichero httpd.conf de nuestro apache


ExpiresActive On
ExpiresDefault "access plus 1 month"

Reiniciamos apache again

# /etc/init.d/httpd restart

Ahora, es cuando debemos comprobar con Yslow que nuestro contenido expira en el tiempo que nosotros hemosindicado. Para mod_expire hay dos directivas, ExpireDefault y ExpireByType. Son muy similares

ExpireDefault

ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"

ExpireByType

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"

Links:

http://www.yukei.net

http://mapopa.blogspot.com

http://httpd.apache.org/docs/2.0/mod/mod_expires.html

One thought on “Apache mod_expire. Expiración de contenidos web

Leave a Reply

Your email address will not be published. Required fields are marked *