2011-03-16 10 views
7

Al crear una aplicación ASP.Net MVC 3.0, puedo incluir un atributo OutputCache en una acción y definir la duración de la caché. Después de esta duración, cualquier actividad que provoque la acción disparará hará que este resultado almacenado en caché se descarte y actualice.ASP.Net MVC 3.0 Atributo [OutputCache] - ¿Es esto global, o por sesión?

Mi pregunta es ... ¿Esta salida en caché es global para todas las sesiones de usuario o esta opción de caché es específica para cada sesión? En otras palabras, si el usuario 1 realiza una solicitud donde una acción con un atributo OutputCache se establece en 1 hora, inicia su solicitud al mediodía (12:00 p.m.). Usuario2 realiza una solicitud para la misma acción, pero al decir mediodía treinta (12:30 PM). ¿El resultado almacenado en la memoria caché será el mismo para ambos usuarios? De ser así, ¿se actualizará la salida en caché para el usuario2 a la 1:00 PM?

Respuesta

6

Depende. Si su URL contiene partes específicas del usuario (por ejemplo, ~/blogs/userid/1), entonces sí, de lo contrario no es específica de la sesión. Puede ajustarlo según varían según param, ...

El almacenamiento en memoria caché en ASP NET MVC no es diferente a Web Forms, es solo la misma infraestructura que es Basado en URL.

+0

Tengo una pregunta de almacenamiento en caché [aquí] (https://stackoverflow.com/questions/38965684/is-there-any-http-caching-for-asp-net-web-forms). Apreciar su entrada – Lijo

5

Puede usar varybyparam como dijo Aliostad, la duración sería entonces específica de la sesión, de lo contrario no lo es.

[OutputCache(Duration=10, VaryByParam="none")] 

http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs

+0

Me gusta su respuesta porque ha proporcionado un ejemplo. Gracias. +1. Debido a que Aliostad realmente proporcionó la misma respuesta primero, otorgo a @Aliostad la respuesta. – barrypicker

+0

¿Cómo la duración puede activarla sesión específica? No puedo entender esto ... – Zote

+1

Lo único que VaryByParam puede hacer es crear copias en caché únicas basadas en la cadena de consulta o en los valores de formulario. El almacenamiento en caché será específico de la sesión SOLAMENTE si la ID del usuario o algún otro valor de identificación se incluye en los parámetros de consulta o formulario. –

0

usted puede hacer fácilmente que Session dependiente utilizando un VaryByCustom y devolver el SessionId (operación muy barato).

Cuestiones relacionadas