2012-03-06 15 views
16

Estoy tratando de utilizar el atributo OutputCache en mi MVC aplicación y no parece funcionar cuando uso OutputCacheLocation.Client:OutputCache Localización = Cliente no parece trabajar

public class HomeController : Controller 
{ 
    [OutputCache(Duration=15, Location=OutputCacheLocation.Client)] 
    public ActionResult Client() 
    { 
     ViewBag.Message = "The current time is " + DateTime.Now.ToString("hh:mm:ss"); 

     return View(); 
    } 

    [OutputCache(Duration=15, Location=OutputCacheLocation.Any)] 
    public ActionResult Any() 
    { 
     ViewBag.Message = "The current time is " + DateTime.Now.ToString("hh:mm:ss"); 

     return View(); 
    }   
} 

El primero de ellos no lo hace caché . Llego a la página cada segundo y cambia el tiempo. El segundo funciona Solo cambia el tiempo cada 15 segundos. ¿Hay algo que este olvidando? Estoy depurando esto usando IE8 y el servidor de desarrollo integrado en Visual Studio.

+4

"Cliente" significa literalmente el cliente, es decir, IE. Entonces, si accedes a la página manualmente, no estás jugando según las reglas; [el almacenamiento en memoria caché del lado del cliente significa que ni siquiera se supone que debe presionar la página.] (http://msdn.microsoft.com/en-us/library/system.web.ui.outputcachelocation.aspx) – bzlm

+0

@bzlm qué hacer ¿Te refieres? Si navego a/home/client y luego a otra página, y de regreso a/home/client. ¿No debería recibir la página en caché? (¿Mientras estoy dentro del marco de tiempo?) – Joe

+1

@bzlm espera, ya veo. presionar F5 invalida la memoria caché, navegar desde/hacia sirve la misma página. No lo sabía. deberías publicar eso como respuesta. He estado buscando en todo Internet y no he podido encontrar ese tidbit – Joe

Respuesta

17

Si marca F5 está desalojando el caché del cliente. La forma en que se supone que debe funcionar el caché del cliente es que tiene enlaces en el sitio apuntando a la acción Client desde otras vistas y cuando el usuario hace clic en esos enlaces se servirá la versión en caché (asumiendo que él hace eso en el intervalo de que la página está en caché).

+1

Tiene sentido. También resulta que si simplemente ingresa la dirección nuevamente, se publicará la versión en caché, pero tiene razón, el F5 simplemente borra la caché. – Dismissile

+2

@Dismissile, creo que este comportamiento difiere un poco del navegador, pero sí, generalmente solo escribir la dirección respetará el caché y F5 ignorará el caché temporalmente * o * desalojará el recurso en caché. – bzlm

+0

@bzlm Gracias por la información adicional. – Dismissile