Para evitar que los usuarios ADSL de TeleFonica sigan viendo versiones antiguas de una web podemos añadir información sobre el tiempo de modificación, el tiempo de expiración y el modo de cache en la cabecera HTTP/1.1 de los archivos. Esto se puede hacer desde cualquier lenguaje CGI como Perl, Python o PHP mediante sus funciones incorporadas y también mediante los módulos de Apache mod_expires y mod_headers.

Las cabeceras son:
Expires: [fecha]
Last-Modified: [fecha]
Cache-Control: [opciones]
Last-Modified contiene la fecha de la última modificación del archivo. Si no se especifica Expires y esta fecha es anterior a la actual el cache no volverá a leer la página.

Expires contiene la fecha a partir de la que el proxy volvera a cargar el documento.

El formato de las fechas es el estandar HTTP-Date:

día de la semana en corto (Mon Tue Wed Thu Fri Sat Sun
día del mes en dos dígitos
mes en corto (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dic)
año cuatro cifras
tiempo en horas:minutos:segundos en 24 horas
franja horaria (España es GMT+1)
Cache-Control contiene una lista separada por comas de las siguientes opciones:

no-cache - el documento no se debe cachear
public - el documento debe cachearse
max-age=[segundos] - el máximo tiempo en segundos sin recargar
min-fresh=[segundos] - el mínimo en segundos antes de recargar
must-revalidate - el proxy vuelve a mirar si se ha actualizado el archivo cada vez que se pide con un If-Modified-Since pero si no se ha modificado no lo vuelve a descargar (este es aconsejable usarlo)
Estos datos son sólo guias para el proxy que después puede hacer lo que le da la gana. De todas formas, muchos navegadores, como MoZilla las usan para saber que es lo que tienen que volver a descargarse. Además, el Google mira el Last-Modified para saber si debe volver a indexar.

A mandar