MVCDonutCaching - как удалить дочерний кэш действий MVC Donut Caching

Я использую этот пакет MVCDonutCaching Nuget, потому что в руководстве они сказали, что это возможно с помощью дочерних действий.

Этот вопрос не работал для меня, или я не понял его правильно.

Если кто-то знает, как удалить дочерний кеш со стандартным OutputCache атрибут, то это тоже хорошо!

Я искал это, но я не могу найти это. Смотрите здесь пример:

Индекс действия HomeController (домашняя страница):

[AllowAnonymous]
public ActionResult Index()
{
   return View();
}

ChildAction of NewsController:

[AllowAnonymous]
[ChildActionOnly]
[DonutOutputCache(Duration = 600, Location = OutputCacheLocation.Server)]
public PartialViewResult LastArticles(int numberOfArticles)
{
    return PartialView("_LastArticles", db.NewsArticles
    .Include(i => i.Tags)
    .Include(i => i.SeoTags)
    .Where(n => n.Status == PublishStatus.Published)
    .OrderByDescending(n => n.PublishDate)
    .Take(numberOfArticles)
    .ToList());
}

Индексный просмотр HomeController:

@{ Html.RenderAction("LastArticles", "News", new { numberOfArticles = 2 }); }

Чтобы очистить кэш, в моем приложении есть область администратора с контроллером и действием для обновления данных, хранящихся в дочернем действии. Поэтому, когда новостная статья обновляется. Кэш должен обновляться на главной странице.

В этом действии у меня есть следующий код:

var cacheManager = new OutputCacheManager();
cacheManager.RemoveItem("News", "LastArticles", new { area = "", numberOfArticles = 2 });
cacheManager.RemoveItem("News", "LastArticles", new { area = "" });

Я пробовал несколько версий, но без удачи. Кто-нибудь может мне помочь?

1 ответ

Решение

Я считаю, что вы не должны явно определять (пустую) область. Хотя область является важной частью маршрутизации, MVCDonutCaching делает что-то странное в определении внутреннего ключа. Возможно, MVCDonutCache имеет ошибку, касающуюся области.

Другие вопросы по тегам