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:
Gracias, me fue muy útil.