Как удалить OutputCache на ChildAction?

Я пытаюсь воспользоваться функциями кэширования пончиков в .Net MVC 3. Для моей домашней страницы в моем домашнем контроллере у меня есть:

public ActionResult Index()
{
    return View();
}

[ChildActionOnly]
[OutputCache(Duration=3600)]
public ActionResult IndexMain()
{
    return PartialView(ViewModelRepository.GetIndexViewModel());
}

На мой взгляд, у меня есть:

<% Html.RenderAction("IndexMain");%>

Все работает нормально. Однако при изменении данных я запускаю:

var urlToRemove = Url.Action("IndexMain", "Home");
Response.RemoveOutputCacheItem(urlToRemove);

RemoveOutputCacheItem выполняется без ошибок, но кэш ChildAction не становится недействительным. Есть ли способ программно удалить элемент кеша из ChildAction?


person wilk    schedule 26.02.2011    source источник
comment
Еще пара ссылок: stackoverflow.com/a/7530265/63733, thenullreference.com/blog/, stackoverflow.com/a/7117242/63733   -  person marapet    schedule 26.03.2013


Ответы (2)


Пробовали ли вы использовать такие свойства VaryBy, как VaryByParam или VaryByCustom?

person ianaldo21    schedule 05.03.2012
comment
Похоже, это единственный способ обойтись без полноценной повторной реализации. - person marapet; 26.03.2013

Для решения этой конкретной проблемы существует пакет NuGet. Это объясняет проблему и ее решение:

http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3.

person Moho    schedule 27.03.2013