У багатьох діях програми 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)
як уже згадуваний Гедрій.
0 для відповіді № 3
Оскільки всі просять спосіб очистити всі URL-адреси ...
Я можу думати два способи:
1 - болісно, але легко, підтримуйте безліч віртуальних шляхів, щоб бути чистими.
foreach(string path in myArray){HttpResponse.RemoveOutputCacheItem(path); }
2- Використовує відображення, щоб отримати все, приклад тут: список записів OutputCache
Я думаю, що це важко, оскільки це не кешування сторінок ASP.NET, а кеш ядра IIS (7+).