Para garantir que o JQuery não esteja armazenando em cache os resultados, em seus métodos ajax, coloque o seguinte:
$.ajax({
cache: false
//rest of your ajax setup
});
Ou para impedir o armazenamento em cache no MVC, criamos nosso próprio atributo, você pode fazer o mesmo. Aqui está o nosso código:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
}
Em seguida, basta decorar seu controlador com [NoCache]
. OU para fazer isso por tudo, você pode simplesmente colocar o atributo na classe da classe base da qual você herda seus controladores (se você tiver um) como nós temos aqui:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Você também pode decorar algumas das ações com esse atributo se precisar que elas não sejam armazenáveis em cache, em vez de decorar todo o controlador.
Se a sua classe ou ação não teve NoCache
quando foi renderizada no seu navegador e você deseja verificar se está funcionando, lembre-se de que, após compilar as alterações, é necessário fazer uma "atualização definitiva" (Ctrl + F5) no seu navegador. Até você fazer isso, seu navegador manterá a versão antiga em cache e não a atualizará com uma "atualização normal" (F5).