Historia del fondo:IE 8 y el almacenamiento en caché del lado del cliente
que tiene un portal web en .NET 3.5 en un servidor web IIS 6. Actualmente hay una página a la que se le asigna un valor y en función de ese valor busca un archivo PDF en un servicio web y muestra los resultados al usuario en otra pestaña de la página web. Esto se hace con el siguiente código.
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.Clear();
context.Response.AddHeader("Accept-Header", pdfStream.Length.ToString());
context.Response.ContentType = "application/pdf";
context.Response.BinaryWrite(pdfStream.ToArray());
context.Response.Flush();
Esto funciona y funciona desde hace años. Sin embargo, recibimos un problema del cliente de que un cliente en particular tenía el PDF devuelto como el mismo PDF cada vez hasta que borraban la caché de Internet temporal.
Pensé, genial, es fácil. Simplemente agregaré los encabezados de caché a la respuesta para nunca almacenarla en caché. Por lo que añade lo siguiente:
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);//IE set to not cache
context.Response.Cache.SetNoStore();//Firefox/Chrome not to cache
context.Response.Cache.SetExpires(DateTime.UtcNow); //for safe measure expire it immediately
Después de una prueba rápida me dieron exactamente lo que estaba esperando en la cabecera de respuesta.
Cache-Control no-cache, no-store
Pragma no-cache
Expires -1
El problema:
Así que este se puso en marcha. Todo parecía genial el primer día. El día después, bam, todos comenzaron a recibir pantallas blancas y no se mostró ningún PDF. Después de una investigación más profunda, descubrí que solo era IE 6,7,8. Chrome está bien, Firefox está bien, safari bien, incluso IE 9 bien. Sin saber por qué sucedió esto, revertí mi cambio y lo implementé, y todo comenzó a funcionar nuevamente.
He buscado por todas partes intentando averiguar por qué mis encabezados de caché parecían confundir IE 6-8 en vano. ¿Alguien ha experimentado este tipo de problema con IE 6-8? ¿Hay algo que este olvidando? Gracias por cualquier idea.
Gracias por publicar esto. Perdí muchas horas y mucha frustración tratando de resolver esto. –