Je suis un peu en retard pour répondre à cette question, mais au lieu d'utiliser votre propre système, utilisez simplement ce qui vous est fourni. Comme mentionné précédemment, ne désactivez pas la mise en cache pour tout. Par exemple, les scripts jQuery fortement utilisés dans les mvc doivent être mis en cache. En fait, l'idéal serait d'utiliser un CDN pour ces scripts, mais ce que je veux dire, c'est que certains contenus devraient être mis en cache.
Ce que je trouve le plus efficace ici, plutôt que de saupoudrer les [OutputCache] partout, c'est d'utiliser une classe :
[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class NoCacheController : Controller
{
}
Tous les contrôleurs pour lesquels vous souhaitez désactiver la mise en cache héritent ensuite de ce contrôleur.
Si vous avez besoin de remplacer les valeurs par défaut de la classe NoCacheController, il vous suffit de spécifier les paramètres de cache dans votre méthode d'action et les paramètres de votre méthode d'action auront la priorité.
[HttpGet]
[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")]
public ViewResult Index()
{
...
}