Вместо того, чтобы кататься самостоятельно, просто используйте то, что вам предоставлено.
Как упоминалось ранее, не отключайте кэширование для всего. Например, jQuery-скрипты, интенсивно используемые в ASP.NET MVC, должны быть кэшированы. На самом деле в идеале вы должны использовать CDN для тех, кто в любом случае, но я хочу сказать, что некоторое содержимое должно быть кэшировано.
Здесь я считаю, что лучше всего не использовать [OutputCache] везде, а использовать класс:
[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class NoCacheController : Controller
{
}
Все ваши контроллеры, для которых вы хотите отключить кэширование, затем наследовать от этого контроллера.
Если вам необходимо переопределить значения по умолчанию в классе NoCacheController, просто укажите параметры кэша в вашем методе действия, и параметры в вашем методе Action будут иметь приоритет.
[HttpGet]
[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")]
public ViewResult Index()
{
...
}