MVC: добавить кэш вывода для всех действий

#c# #asp.net #asp.net-mvc #asp.net-mvc-4

#c# #asp.net #asp.net-mvc #asp.net-mvc-4

Вопрос:

Один из моих проектов MVC близок к завершению. Мы пытаемся оптимизировать проект с помощью кэша вывода.

Однако мы обнаружили, что существует так много контроллеров с еще большим количеством действий. Мы не думаем, что добавлять атрибут кэша вывода к каждому действию — хорошая идея.

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

Комментарии:

1. используйте ‘BaseController’ и наследуйте все контроллеры от BaseController. Вы можете использовать OutputCache для BaseController, который будет применяться ко всем дочерним контроллерам. Таким образом, вы можете избежать указания для каждого действия.

Ответ №1:

Добавьте его в глобальные фильтры.

 filters.Add(new OutputCacheAttribute 
 { 
    NoStore = true, 
    Duration = 0,
    VaryByParam = "*"
 });
  

Вы можете сделать это в FilterConfig.cs файле в App_Start папке.

Комментарии:

1. Вы все герои

2. @JackHe Рад помочь …:)

Ответ №2:

Используйте глобальные фильтры в FilterConfig.cs

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {

                OutputCacheAttribute cache = new OutputCacheAttribute();
                  //set other properties
                filters.Add(cache);
}