2016-01-20 4 views
3

У меня есть действие, как это:Удалить OutputCache с несколькими VaryByParam

[OutputCache(Duration = 3600, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "page;categor;searchString")] 
    public virtual async Task<ActionResult> Index(int? category, int page = 1, string searchString = null) 

Это действие может иметь несколько кэшировать результат. его до сих пор. но когда я отправляю новый контент, мне нравится удалять все эти множественные результаты.

Я знаю, что я могу использовать RemoveOutputCacheItem со списком адресов в Еогеасп или так ..

var urls = new List<string>(); 
foreach (var url in urls) 
{ 
    HttpResponse.RemoveOutputCacheItem(url); 
} 

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

Мой вопрос: есть ли лучший способ сразу удалить весь этот кеш?

ответ

1

Есть ли лучший способ, чтобы удалить все эти кэш сразу

Не то, что я знаю, у. Но вы можете удалить кешированный элемент для определенного метода действий контроллера, как показано ниже (при условии, что ваше имя контроллера - controller1). Идея взята из Clearing the ASP.Net MVC Cache

HttpResponse.RemoveOutputCacheItem(Url.Action("Index", "controller1", new { category = 1234 })); 
+0

OP хочет, чтобы очистить все URLS кэш сразу –

+0

Да видел это, но мне известно, нет такого способа; да один раз длительность отключений будет очищена. – Rahul

Смежные вопросы