¿Hay alguna manera de desactivar el almacenamiento en caché del navegador del cliente para sitios web específicos?

10

Esta es una pregunta independiente del navegador, pero estamos probando con IE9.

Una de las aplicaciones web que visitan nuestros usuarios se almacena en caché al azar y los cambios no se muestran cuando deberían. Ningún otro sitio tiene este problema y hemos trabajado con el proveedor que afirma que no le está sucediendo a nadie más. Si usamos la barra de herramientas del desarrollador y seleccionamos "forzar actualización desde el servidor", todo se actualiza correctamente.

En lugar de resolver realmente el problema, nuestro pensamiento es solucionarlo deshabilitando la memoria caché para este sitio específico. Sin embargo, no sabemos cómo.

GollyJer
fuente

Respuestas:

10

La única forma correcta de deshabilitar el almacenamiento en caché del navegador es mediante encabezados HTTP desde la propia aplicación web. El encabezado HTTP 1.1 "Cache-Control" solo debería ser suficiente para cualquier navegador posterior al año 2000. Pero para una protección adicional, el servidor puede emitir juntos los encabezados HTTP 1.1 "Cache-Control" y HTTP 1.0 "Expires" .

Una forma hack'ish pero a veces vista de manejar la invalidación de caché es una cadena "cachebuster" en las URL del servidor. El cachebuster a menudo se basa en la marca de tiempo y se agrega como una cadena de consulta a cada HTML LINK para hacer que la URL sea única y solo se use una vez. Algo así como http://example.org/filename.html?cb=<timestamp+random_value>. Esto es feo y no hace nada que los encabezados HTTP no hagan mucho mejor. Pero podría usarse como un truco para una audiencia limitada (fx en una Intranet), o como una capa adicional de protección junto con los encabezados HTTP adecuados.

AFAIK no hay forma de deshabilitar selectivamente el almacenamiento en caché para un solo sitio solo desde Internet Explorer. Una solución (muy complicada) podría ser instalar el caché Varnish como caché intermediario en su LAN, configurar Internet Explorer para usar Varnish como proxy HTTP y usar el lenguaje VCL en Varnish para volver a escribir los encabezados HTTP solo para este sitio específico.

Honestamente, creo que su proveedor está cometiendo un error aquí. Sugeriría instalar Fiddler2 para IE o Firebug para Firefox , y mire los encabezados HTTP reales que envía la aplicación web. Correlacione eso con el tutorial de almacenamiento en caché de Mark Nottingham que ya he vinculado anteriormente: supongo que los encabezados permiten el almacenamiento en caché, o al menos no prohíben expresamente el almacenamiento en caché.

Jesper M
fuente
0

Asegúrese de establecer los encabezados de caducidad adecuados. Si pasa el tiempo en pasado, el contenido no se almacenará en caché. Verifique la hora / fecha en la estación de trabajo donde se ejecuta IS9. Ver también: http://www.mnot.net/cache_docs/

Mircea Vutcovici
fuente
0

Si no puede modificar el contenido del sitio web en cuestión, puede usar un servidor proxy para modificar el contenido en ruta a su navegador. Esto le permitiría cambiar los encabezados de caducidad.

JeffG
fuente
0

Si el sitio web le permite conectarse a través de HTTPS, entonces, dependiendo de su navegador, puede deshabilitar el almacenamiento en caché de las páginas cifradas.

En IE, esto se puede hacer así:

Puede verificar la configuración de IE en Opciones de Internet-> Avanzado-> Seguridad-> No guardar páginas encriptadas en el disco.

JeffG
fuente
Pidió una solución agnóstica para el navegador.
Mircea Vutcovici
1
@Mircea Esta es una solución independiente del navegador. Acabo de proporcionar un ejemplo gratuito usando IE. Muchos otros navegadores tienen una opción para deshabilitar el almacenamiento en caché SSL, pero la configuración está en diferentes lugares.
JeffG
0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Es posible que desee considerar el uso de claves aleatorias en la barra de URL, esto también evitará el almacenamiento en caché dentro del navegador.

Ricardo
fuente
Esto funcionaría, si GollyJer tuviera la capacidad de modificar el sitio web. Supongo que no lo hace en función de su pregunta.
JeffG
Para ser precisos, las "claves aleatorias" no evitan eficazmente el almacenamiento en caché. El navegador y las cachés intermedias aún pueden almacenar la respuesta en el disco. Pero la próxima vez que se solicite el mismo archivo, la clave aleatoria hará que la URL sea diferente y, por lo tanto, no se utilizará la versión en caché en el disco. Se descargará una nueva representación del servidor y posiblemente se almacenará en caché en el disco. Además, la etiqueta META PRAGMA es antigua y no debe usarse; la recomendación es usar HTTP expira y encabezados de control de caché.
Jesper M