Pour s'assurer que JQuery n'est pas mise en cache les résultats, sur vos méthodes ajax, mettre les éléments suivants:
$.ajax({
cache: false
//rest of your ajax setup
});
Ou à empêcher la mise en cache dans MVC, nous avons créé notre propre attribut, vous pourriez faire la même chose. Voici notre code:
[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);
}
}
Puis il suffit de décorer votre contrôleur avec [NoCache]
. OU de le faire pour tout ce que tu pourrais juste mettre l'attribut de la classe de la classe de base que vous héritez de vos contrôleurs de (si vous en avez un) comme ici:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Vous pouvez également décorer certaines des actions avec cet attribut si vous en avez besoin pour être non mis en cache, au lieu de decoarting l'ensemble du contrôleur.
Si votre classe ou de l'action n'avait pas NoCahe
lorsqu'il a été rendu dans votre navigateur et que vous voulez vérifier qu'il fonctionne n'oubliez pas qu'après la compilation les modifications que vous avez besoin de faire un "rafraîchissement" (Ctrl+F5) dans votre navigateur. Jusqu'à ce que vous le faites, votre navigateur va garder l'ancienne version en cache, et de ne pas l'actualiser avec un "normal actualiser (F5).