В много действия от 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+) кеш на ядрото.