He notado que algunos navegadores (en particular, Firefox y Opera) son muy entusiastas al usar copias en caché de archivos .css y .js , incluso entre sesiones de navegador. Esto genera un problema cuando actualiza uno de estos archivos, pero el navegador del usuario sigue utilizando la copia en caché.
La pregunta es: ¿cuál es la forma más elegante de obligar al navegador del usuario a volver a cargar el archivo cuando ha cambiado?
Idealmente, la solución no obligaría al navegador a recargar el archivo en cada visita a la página. Publicaré mi propia solución como respuesta, pero tengo curiosidad por saber si alguien tiene una mejor solución y dejaré que sus votos decidan.
Actualización:
Después de permitir una discusión aquí por un tiempo, he encontrado que la sugerencia de John Millikin y da5id es útil. Resulta que hay un término para esto: auto-versionado .
He publicado una nueva respuesta a continuación, que es una combinación de mi solución original y la sugerencia de John.
Otra idea sugerida por SCdF sería agregar una cadena de consulta falsa al archivo. (Algún código de Python para usar automáticamente la marca de tiempo como una cadena de consulta falsa fue enviada por pi ). Sin embargo, se debate si el navegador guardará o no en caché un archivo con una cadena de consulta. (Recuerde, queremos que el navegador guarde en caché el archivo y lo use en futuras visitas. Solo queremos que recupere el archivo nuevamente cuando haya cambiado).
Como no está claro qué sucede con una cadena de consulta falsa, no acepto esa respuesta.
iframe.contentWindow.location.reload(true)
. Consulte el método (4) de stackoverflow.com/a/22429796/999120 : se trata de imágenes, pero se aplica lo mismo.
ExpiresActive On ExpiresDefault "modification"
.