¿Cuál es la mejor forma de manejar a un usuario que vuelve a una página que tenía elementos en caché en una aplicación asp.net? ¿Hay una buena manera de capturar el botón Atrás (evento?) Y manejar el caché de esa manera?¿Cuál es la mejor manera de lidiar con el caché y el botón de retroceso del navegador?
Respuesta
Usted puede intentar usar la HttpResponse.Cache property si eso ayuda:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;
if (Response.Cache.VaryByParams["Category"])
{
//...
}
O podría podría bloquear el almacenamiento en caché de la página en conjunto con HttpResponse.CacheControl, pero ha sido desaprobado en favor de la propiedad de caché anterior:
Response.CacheControl = "No-Cache";
Editar: realmente go nuts y O usted podría hacer todo a mano:
Response.ClearHeaders();
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
La mejor manera de manejarlo es probablemente colocar una directiva de no-caché en sus páginas ASP.NET (o una página maestra si está usando una). No creo que haya una forma de tratar esto directamente en su código ASP.NET (ya que la decisión de caché está ocurriendo en el cliente).
En cuanto a MVC, no sé cómo lo lograría (suponiendo que sea diferente de ASP.NET basado en formularios Web); No lo he usado
Por lo que yo sé (o por lo menos han leído) es su mejor esfuerzo para tratar de no trabajar en respuesta a eventos de usuario, sino más bien pensar "en la página" ..
Arquitecto su aplicación por lo que doesn No importa si se presiona el botón Atrás. Simplemente lo tratará. Esto puede significar un poco de trabajo adicional desde el punto de vista del desarrollo, pero en general hará que la aplicación sea mucho más robusta.
Ie si el paso 3 realiza algunos cambios de datos, el usuario hace clic atrás (en el paso 2) y vuelve a hacer clic, luego la aplicación verifica si se han realizado los cambios ... O, idealmente, no hace ningún cambio duro cambios hasta que el usuario haga clic en "Aceptar" al final ... De esta forma, todos los cambios se almacenan y puede volver a llenar el formulario en función de los valores ingresados previamente en la carga, todas y cada una de las veces ..
Espero que tenga sentido:)
-1 Más una respuesta ideal que una pragmática. Algunas aplicaciones se han diseñado de una manera particular desde el principio, cuando se trabaja en un equipo grande con un presupuesto ajustado, será una tarea difícil vender los recursos para cambiar la arquitectura sin ningún beneficio obvio para las partes interesadas del negocio. Además, esto no responde realmente la pregunta. –
RFC 2616 §13.13 dice que Historia y Cache son cosas diferentes. No debería haber absolutamente ninguna forma de que la memoria caché afecte el botón Atrás.
Si cualquier combinación de encabezados HTTP afecta al botón Atrás, es un error en el navegador ... con una excepción.
En HTTP S navegadores interpretan Cache-control: must-revalidate
como petición para refrescar las páginas cuando se utiliza el botón Atrás (Mozilla llama "modo de banco tonto"). Esto no es compatible con HTTP simple.
El siguiente código trabajó para mí en IE9 +, FF21 y reciente Chrome:
Response.Cache.SetCacheability(HttpCacheability.NoCache | HttpCacheability.Private);
Response.Cache.AppendCacheExtension("must-revalidate");
Response.Cache.AppendCacheExtension("max-age=0");
Response.Cache.SetNoStore();
Puede colocar esto en Page_Load()
controlador de eventos en el MasterPage para que cada página de su aplicación requiere una ida y vuelta a la servidor al presionar el botón Atrás.
- 1. Cuál es la mejor manera de lidiar con
- 2. Fechas de Javascript: ¿cuál es la mejor manera de lidiar con el horario de verano?
- 3. la mejor manera de lidiar con JSON en django
- 4. ¿Cuál es la forma correcta de lidiar con la compatibilidad del navegador css?
- 5. ¿Cuál es la mejor manera de hacer caché de salida del lado del servidor en PHP?
- 6. usuario Alerta cuando golpean el botón de retroceso del navegador - con buena razón
- 7. mejor manera de desactivar el almacenamiento en caché del cliente
- 8. ¿cuál es la mejor manera de reproducir el sonido rápidamente cuando el botón rápido presiona xcode?
- 9. ¿Cuál es la mejor manera de lidiar con ramas muertas en TFS?
- 10. Mejor manera de evitar el almacenamiento en caché del navegador de archivos JavaScript
- 11. ¿Cuál es la mejor manera de obtener el primer y el último día del mes pasado?
- 12. ¿Cuál es la mejor manera de desactivar el almacenamiento en caché de plantillas Jinja2 en bottle.py?
- 13. ¿Cuál es la mejor manera de eliminar el caché CSS de Plone?
- 14. ¿Cuál es la diferencia entre HTML5 AppCache y el caché del navegador normal?
- 15. ¿Cuál es la mejor manera de reemplazar el botón de examinar archivos en html?
- 16. ¿Cuál es la mejor manera de documentar el código f #?
- 17. ¿Cuál es la mejor manera de gestionar el cambio?
- 18. ¿cuál es la mejor manera de editar el archivo csv
- 19. ¿Cómo rompes los marcos sin romper el botón de retroceso del navegador?
- 20. ¿Cuál es la mejor manera de reutilizar el analizador Lua?
- 21. ¿Cuál es la mejor manera de abrir una nueva ventana del navegador?
- 22. ¿La mejor manera de lidiar con el tiempo de espera de la sesión en aplicaciones web?
- 23. ¿Cuál es la mejor manera de bloquear el caché en asp.net?
- 24. la mejor manera de detectar el navegador en js
- 25. Botón de retroceso página de actualización
- 26. ¿Cuál es la mejor manera de probar el código GWT
- 27. ¿Cuál es la mejor manera de trabajar con el encabezado Expires en ASP.NET MVC?
- 28. ¿Cuál es la mejor manera de usar los datos de almacenamiento en caché en js en el lado del cliente?
- 29. Ajax, botón de retroceso y actualizaciones DOM
- 30. Cómo cambiar el texto del botón de retroceso de uinavigationbar
Ver http: // stackoverflow.com/questions/20088616/browser-back-button-showing-the-page-from-cache –