Técnica simple del lado del cliente
En general, el almacenamiento en caché es bueno. Por lo tanto, hay un par de técnicas, dependiendo de si está solucionando el problema mientras desarrolla un sitio web, o si está tratando de controlar el almacenamiento en caché en un entorno de producción.
Los visitantes generales de su sitio web no tendrán la misma experiencia que tienen cuando desarrollan el sitio. Dado que el visitante promedio visita el sitio con menos frecuencia (tal vez solo unas pocas veces al mes, a menos que sea una red de Google o hi5), es menos probable que tenga sus archivos en caché, y eso puede ser suficiente. Si desea forzar una nueva versión en el navegador, siempre puede agregar una cadena de consulta a la solicitud y aumentar el número de versión cuando realice cambios importantes:
<script src="/myJavascript.js?version=4"></script>
Esto asegurará que todos obtengan el nuevo archivo. Funciona porque el navegador mira la URL del archivo para determinar si tiene una copia en caché. Si su servidor no está configurado para hacer nada con la cadena de consulta, se ignorará, pero el nombre se verá como un nuevo archivo para el navegador.
Por otro lado, si está desarrollando un sitio web, no desea cambiar el número de versión cada vez que guarda un cambio en su versión de desarrollo. Eso sería tedioso.
Entonces, mientras desarrolla su sitio, un buen truco sería generar automáticamente un parámetro de cadena de consulta:
<!-- Development version: -->
<script>document.write('<script src="/myJavascript.js?dev=' + Math.floor(Math.random() * 100) + '"\><\/script>');</script>
Agregar una cadena de consulta a la solicitud es una buena manera de versionar un recurso, pero para un sitio web simple esto puede ser innecesario. Y recuerde, el almacenamiento en caché es algo bueno.
También vale la pena señalar que el navegador no es necesariamente tacaño para mantener los archivos en caché. Los navegadores tienen políticas para este tipo de cosas, y generalmente se rigen por las reglas establecidas en la especificación HTTP. Cuando un navegador realiza una solicitud a un servidor, parte de la respuesta es un encabezado CADUCADO ... una fecha que le indica al navegador cuánto tiempo debe mantenerse en caché. La próxima vez que el navegador encuentre una solicitud para el mismo archivo, verá que tiene una copia en la memoria caché y buscará la fecha de CADUCIDAD para decidir si debe usarse.
Entonces, lo creas o no, en realidad es tu servidor el que está haciendo que el caché del navegador sea tan persistente. Puede ajustar la configuración de su servidor y cambiar los encabezados de CADUCES, pero la pequeña técnica que he escrito anteriormente es probablemente una forma mucho más sencilla de hacerlo. Dado que el almacenamiento en caché es bueno, generalmente desea establecer esa fecha en el futuro (un "Encabezado de caducidad de futuro lejano") y utilizar la técnica descrita anteriormente para forzar un cambio.
Si está interesado en obtener más información sobre HTTP o cómo se realizan estas solicitudes, un buen libro es "Sitios web de alto rendimiento" de Steve Souders. Es una muy buena introducción al tema.
ExpiresActive On ExpiresDefault "modification"
.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.