Aunque cachear contenidos es un buen sistema para que los navegadores no hagan peticiones de más, otro sistema muy interesante y proactivo es el de indicar la última vez que se modificó el documento. Gracias a esta información tanto el servidor como los navegadores podrán definir si el usuario debe descargar una nueva versión del contenido o no.
Este sistema es totalmente compatible y complementario con las cachés, por lo que su uso, sobre todo en contenidos dinámicos, se vuelve casi imprescindible.
Hay que diferenciar entre el sistema “Last-Modified” y el “ETag”. El primero de ellos manda la fecha de última modificación y el segundo manda un identificador único del contenido y la actualización del mismo.
Gracias al uso de este sistema los servidores web y los navegadores se comunicarán de tal manera que el servidor podrá devolver un Código de Estado 304, gracias al cual se avisa al navegador que el contenido no ha cambiado y que, por lo tanto, no hay ninguna necesidad de tener que volverlo a descargar y de esta forma ahorrar tiempo y ancho de banda.
DEVOLVER LA CABECERA ETAG
Categoría: Contenidos, Servidor
La mejor forma de comunicación entre los navegadores y el servidor Apache en el caso de saber si un contenido se ha modificado o no es el uso del ETag. Este sistema se basa en los inode, tamaño y fecha de actualización, de forma que se convierte en una forma más completa que la simple fecha de actualización.
Para activarlo tan sólo habría que configurar algo similar a lo siguiente:
FileETag All
En el caso de IIS, a partir de la versión 7 el sistema ya viene activado por defecto, aunque sólo funciona con contenidos estáticos. En versiones anteriores es bastante complejo de configurar aunque existe documentación oficial de Microsoft.
CABECERA ETAG EN CDN O DOMAIN SHARDING
Categoría: Contenidos, Servidor
Aunque activar los ETag puede ser muy interesante, si tenemos un sistema distribuido en formato Domain Sharding, por ejemplo y ya no digamos en un CDN, podemos tener ciertos problemas ya que una imagen podría tener distintos ETag dependiendo del servidor (host) al que se esté llamando.
El ETag permite diferentes opciones. Por defecto usamos All para que lo configure automáticamente, aunque permite tres parámetros: INode MTime Size.
En el caso de redes en CDN o con Domain Sharding sería interesante usar la configuración:
FileEtag MTime Size