2011-06-27 9 views
6

Quiero una manera fácil de borrar las páginas almacenadas en caché en mi sitio web asp.net-mvc.Puede forzar una eliminación de (página y vista parcial) OutputCache en asp.net-mvc

Tengo costosas operaciones de base de datos, así que a menudo utilizo el almacenamiento de salida para que el sitio funcione más rápido. Tengo el código que se parece a esto:

[OutputCache(Duration = 30000)] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [OutputCache(Duration = 30000, VaryByParam = "*")] 
    public ActionResult GetData(MyParams myParams) 
    { 
     return PartialView("MyView", GetVM(myParams)); 
    } 

Hay ciertos momentos (cuando las cosas van mal) cuando quiero explicitally clara esta caché (independientemente de la duración de la caché existente)

es allí de todos modos para la plena y la página parcial de almacenamiento de salida para eliminar la página en caché y ejecutar a través del código completo?

NOTA: veo que esta cuestión está ya pidió en general alrededor de asp.net como here pero no veo una solución específica asp.net-mvc

he probado esto, pero no parece a trabajar:

public ActionResult ClearCache() 
{ 
     this.HttpContext.Response.RemoveOutputCacheItem("/MyController/Index.aspx"); 
     this.HttpContext.Response.RemoveOutputCacheItem("/MyController/MyView.ascx"); 
} 

Respuesta

1

Creo que encontrará su respuesta aquí: Clearing Page Cache in ASP.NET

+0

esa respuesta no parece enfocarse en la solución basada en MVC. Creo que hay una manera mejor que especificar las extensiones ".aspx" para borrar mi caché. . – leora

+0

Si mira más abajo en la respuesta, encontrará algunos enlaces e ideas en la segunda y tercera respuestas centradas en MVC. –

+0

No funciona para MVC acciones por lo que puedo decir –

0

para una solución basada en MVC puede hacer algo como esto

this.HttpContext.Response.RemoveOutputCacheItem(Url.Action("MyAction","MyController",new{ id = 1234})); 
Cuestiones relacionadas