Para asegurarse de que JQuery no esté almacenando en caché los resultados, en sus métodos ajax, coloque lo siguiente:
$.ajax({
cache: false
//rest of your ajax setup
});
O para evitar el almacenamiento en caché en MVC, creamos nuestro propio atributo, usted podría hacer lo mismo. Aquí está nuestro 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);
}
}
Luego simplemente decora tu controlador con [NoCache]
. O para hacerlo por todos, simplemente puede poner el atributo en la clase de la clase base de la que hereda sus controladores (si tiene uno) como tenemos aquí:
[NoCache]
public class ControllerBase : Controller, IControllerBase
También puede decorar algunas de las acciones con este atributo si necesita que no se puedan almacenar en caché, en lugar de decorar todo el controlador.
Si su clase o acción no tenía NoCache
cuando se procesó en su navegador y desea verificar que funciona, recuerde que después de compilar los cambios, debe hacer una "actualización completa" (Ctrl + F5) en su navegador. Hasta que lo haga, su navegador mantendrá la versión en caché anterior y no la actualizará con una "actualización normal" (F5).