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