/ / OutputCache Flush Cache чрез действие в MVC 3 приложение - asp.net-mvc, asp.net-mvc-3, c # -4.0, action, outputcache

OutputCache Flush Cache чрез действие в MVC 3 приложение - asp.net-mvc, asp.net-mvc-3, c # -4.0, действие, outputcache

В много действия от MVC приложението, което изграждаме, използваме OutputCache както следва:

[OutputCache(Duration = 3600, VaryByCustom = "language")]
public ActionResult SomeAction()
{
//Action..
}

Така че, искам да имам действие, където мога ръчно да изтрия всички тези кешове:

  public ActionResult RefrescarCache()
{
var keys = HttpContext.Cache.Cast<DictionaryEntry>().ToList();

keys.ForEach(k => HttpContext.Cache.Remove(k.Key.ToString()));
ViewBag.operationResult= "The cache was flushed succesfully!";

return View();
}

Нещо, което изглежда не работи. Ще прецизирам всяка идея или съвет, който имате!

Отговори:

1 за отговор № 1

Трябва да погледнете тук: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.removeoutputcacheitem.aspx


2 за отговор № 2

Имахме същия проблем и единственото решение, което работеше, беше с:

HttpResponse.RemoveOutputCacheItem(url)

както Giedrius вече спомена.


0 за отговор № 3

Тъй като всички искат начин за изчистване на всички URL адреси ...

Мога да се сетя за два начина:

1 - болезнено, но лесно, поддържайте масив от виртуални пътища, за да бъдете чисти.

foreach(string path in myArray){HttpResponse.RemoveOutputCacheItem(path); }

2 - Използва размисъл, за да получи всичко, например тук: списък OutputCache запис

Мисля, че това е трудно, защото ASP.NET не кешира страниците, а IIS (7+) кеш на ядрото.