Un truco que supongo que mucha gente conoce pero que creo que es muy sencillo de implementar y muy efectivo.

Muchas veces cuando publicamos una nueva versión de una aplicación web hemos hecho cambios en algun fichero CSS o JavaScript de la misma. Obviamente queremos que el usuario que vuelve a entrar y ve la nueva versión descargue las versiones correctas (las nuevas) y no las que tenga en cache del navegador, proxy o lo que sea. ¿Cómo conseguirlo?

Simplemente añadimos un identificador a la descarga del fichero que podemos ir variando. Idealmente que se modifique con cada versión del fichero, por ejemplo:

<link href="css/style.css?v=2" rel="stylesheet">

Y vamos aumentando (3, 4, … ) con cada nueva versión del CSS. Esta seria la solución ideal aunque requiere estar muy pendiente de los cambios en los ficheros o tener alguna rutina como parte de la generación de la versión, lo cual no es siempre tan sencillo.

Yo por ejemplo opto por un término medio. Utilizo el número de versión de la aplicación ligeramente modificado y que se incluye automáticamente. De esa manera siempre que pongo una versión nueva se recargan todos los ficheros CSS y JavaScript propios de la aplicación. No es la situación ideal porque se recargan incluso los que no se han modificado, pero a cambio tienes a todos los usuarios actualizados y el coste de mantenimiento es casi nulo una vez que te montas los enlaces bien. Por ejemplo usando JSP seria algo así:

<link href="css/style.css?v=${version}" rel="stylesheet">

¿Qué técnica utilizais para resolver este problema de caches?