Pregunta

He intentado muchas maneras de obtener IE8 para recargar una página, pero fracasó. IE sólo sigue usando su caché interna sin preguntar al servidor web para ello.

Estoy enviando los siguientes encabezados de mi servidor web:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

Es sólo una de las muchas combinaciones que lo he intentado.

¿Cómo hago IE buscar a la página cada vez (sin forzar mis usuarios a desactivar la caché dentro IE)?

¿Fue útil?

Solución

La forma correcta es enviar estos encabezados HTTP en la respuesta:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

Su uso hace que todo el trabajo en el IE sin otras modificaciones.

Otros consejos

La forma más sencilla es añadir un parámetro con un sello de fecha / hora comprimido en la cadena de consulta ... Esto hace que se ve como una página completamente nueva de los navegadores.

Sólo una rápida actualización , si los datos de publicación en el servidor, a continuación, IE omitirá la memoria caché y cargar los nuevos datos. Sin embargo, si sólo se está emitiendo peticiones GET, entonces IE se va a ver en la URL y es la configuración propia para determinar si debe tirar de la memoria caché o en realidad ir al servidor para los datos.

Ahora bien, si el usuario tiene la opción "Comprobar si hay nuevas versiones de las páginas guardadas" en Nunca, entonces no hay nada que pueda hacer al respecto corta de añadir un valor a la cadena de consulta. Ver KB263070 para obtener información detallada de la MS en esas opciones. Una mirada rápida a través de respuestas de Microsoft muestra un gran número de personas que han sido poco a esto. La solución que se da siempre es para el usuario para modificar sus valores de memoria caché.

Así que, para usted, la solución va a ser (en el nivel de complejidad)

  1. Anexar un valor cadena de consulta muy variable
  2. informar a los usuarios que deben cambiar el "Comprobar si hay nuevas versiones" ajuste a cualquiera Cada visita a la página o automáticamente.
  3. cambiar sus enlaces a causa espaldas de correos. (Yuck)

Una serie de aplicaciones de elegir ya sea el punto 2 o el punto 1. La razón es que 2 tiene el menor impacto en la base de código mientras que el artículo 1 tiene el menor impacto en sus usuarios.

Si se trata de un sitio de administración, entonces yo diría que ir con la opción 2 como usted debe tener una buena cantidad de influencia sobre la configuración del escritorio de los usuarios.

Con suerte entiendo su pregunta, tal vez le daría prueba, esto borrará:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

Si esto tiene que ser en varias páginas se puede poner en una página maestra (o utilizar algún otro refactorización).

También existe la directiva OutputCache, si el anterior no es lo que estás buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top