asp.net - habilitar - web config cache control
La forma correcta de tener ASP.NET/IIS no almacena en caché los archivos PDF (3)
Tengo el siguiente escenario, y quería sugerencias sobre cuál es la mejor manera de manejar esto. Mi aplicación web (ASP.NET 2.0 / IIS 6) genera archivos PDF y tengo una página de resultados con enlaces a esos archivos PDF.
Ahora, me di cuenta de que si visito la página de resultados, hago clic en un archivo PDF (se abre en una nueva ventana), luego vuelvo a generar el archivo PDF y hago clic en el mismo enlace en la página de resultados, se muestra el PDF ANTERIOR , en lugar de la nueva. Tuve que eliminar los archivos temporales de Internet para ver el nuevo.
Entonces, dado que NO estoy sirviendo un ASPX que realmente escribe el PDF (y no quiero que se muestre el cuadro de diálogo Guardar), sino un enlace directo al archivo PDF, quiero saber cuál es la mejor manera de asegurar que el usuario siempre ve el último archivo en el servidor, no una versión en caché.
Supongo que agregar encabezados sin caché está fuera de discusión. Pero la solicitud PDF aún pasaría por un controlador HTTP, por lo que me gustaría saber si debo crear un controlador HTTP específico para interceptar las solicitudes de PDF, o si debería hacerlo a nivel de IIS ... sin embargo, no necesariamente desea evitar el almacenamiento en caché de TODOS los PDF en ese sitio.
¿Alguna sugerencia? Gracias de antemano por la ayuda.
El hecho de que la eliminación de sus archivos temporales de Internet le proporcionó la nueva versión muestra que el navegador es la fuente de la caché. Podrías desactivar i-caché, pero eso no detendría los archivos adjuntos en caché del documento. Si necesita estar 100% seguro de que el usuario vea la última versión, le sugiero usar un valor de cadena de consulta para hacer que la URL sea diferente. La cadena de consulta podría ser la marca de tiempo de generación de PDF.
Acabo de tener un problema similar. Tengo mi página que permite a los usuarios ingresar datos y generar un nuevo archivo PDF. Haga clic en Guardar. El nuevo archivo pdf sobrescribe el anterior. En IE8, cuando el usuario hace clic en el enlace pdf después de guardar, siempre se mostrará el PDF antiguo (el usuario debe borrar la caché para mostrar la nueva). Después de horas de búsqueda, encontré que en IIS6, vaya a "Caché de resultados", agregue una nueva regla de caché con la extensión de archivo ".aspx", marque "Almacenamiento en caché en modo de usuario" y "Almacenamiento en memoria caché en modo kernel" en ambas opciones , seleccione ''Prevenir todo el almacenamiento en caché''. ¡Esto es trabajo para mí!
Si su enlace al documento pdf tenía una cadena de consulta única adjunta, creo que evitaría el almacenamiento en caché. El tiempo en tics es bueno para usar, por ejemplo:
string.Format("{0}?t={1}", pdfFileUrl, DateTime.Now.Ticks);