Pour vous assurer que JQuery ne met pas les résultats en cache, sur vos méthodes ajax, mettez ce qui suit:
$.ajax({
cache: false
//rest of your ajax setup
});
Ou pour empêcher la mise en cache dans MVC, nous avons créé notre propre attribut, vous pouvez faire de même. 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);
}
}
Décorez ensuite votre contrôleur avec [NoCache]
. OU pour le faire pour tout, vous pouvez simplement mettre l'attribut sur la classe de la classe de base dont vous héritez vos contrôleurs (si vous en avez un) comme nous l'avons ici:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Vous pouvez également décorer certaines des actions avec cet attribut si vous avez besoin qu'elles ne soient pas mises en cache, au lieu de décorer l'ensemble du contrôleur.
Si votre classe ou action n'avait pas NoCache
quand elle a été rendue dans votre navigateur et que vous voulez vérifier qu'elle fonctionne, rappelez-vous qu'après avoir compilé les modifications, vous devez effectuer une "actualisation matérielle" (Ctrl + F5) dans votre navigateur. Jusqu'à ce que vous le fassiez, votre navigateur conservera l'ancienne version mise en cache et ne la rafraîchira pas avec une "actualisation normale" (F5).