Estoy construyendo un sitio ASP.NET MVC 2 en el que estoy usando el parámetro OutputCache en gran medida. Sin embargo, tengo una preocupación: el uso de tal caché puede interferir con la autenticación.Usar ASP.NET MVC OutputCache mientras varía Ver contenido según si el usuario está autenticado
En todas mis páginas, muestro si el usuario está conectado o no. Además, en algunas de mis Vistas, hago el filtrado basado en la función del usuario para determinar si mostrar o no el contenido de una página (por ejemplo, el Editar enlace en una de mis páginas solo se muestra a los usuarios en las funciones de Moderador o Administrador).
¿Usaré OutputCache para interferir con este cambio dinámico de mis Vistas? En caso afirmativo, ¿cómo puedo resolver este problema sin eliminar el almacenamiento en caché?
¿Qué sucede si tengo un método que no requiere autorización pero agrega un enlace Editar dentro de la Vista si el usuario es moderador? En este caso, estoy tratando de lograr algo que se asemeje a cómo funcionan el enlace, la marca, la edición y otros botones de una pregunta o respuesta. ¿No usa también OutputCache? ¡Gracias por tu respuesta! –
Me encontré con http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/ (sobre un viejo problema que luego se solucionó), lo que me dio una idea: si OutputCache es tan malo con esto, ¿es posible ** crear un atributo/filtro de almacenamiento en caché personalizado ** que cree copias diferentes en función de si el usuario ha iniciado sesión y en qué funciones está el usuario, o mejor aún, qué nombre de usuario es, ya que voy a escribir el nombre del usuario en la parte superior de la página - ** ¿es posible **? –
En general, es una mala idea guardar en caché por usuario, ya que su caché se verá inundada de entradas. Si el almacenamiento en caché de donuts es importante para su escenario, también puede usar un filtro de respuesta. Al comienzo de la solicitud, instale un filtro que comprenda algunos [!! ¡DATOS DE SUSTITUCIÓN!], Haga que su WriteSubstitute() escriba este patrón en el flujo de respuesta, luego, al final de la solicitud, su filtro llamará al método Response.WriteSubstitution() real. – Levi