Per assicurarsi che JQuery non memorizzi nella cache i risultati, nei metodi ajax, inserisci quanto segue:
$.ajax({
cache: false
//rest of your ajax setup
});
O per evitare la memorizzazione nella cache in MVC, abbiamo creato il nostro attributo, potresti fare lo stesso. Ecco il nostro codice:
[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);
}
}
Quindi decora il controller con [NoCache]
. O per farlo per tutto ciò che potresti semplicemente mettere l'attributo sulla classe della classe base da cui erediti i tuoi controller (se ne hai uno) come abbiamo qui:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Puoi anche decorare alcune delle azioni con questo attributo se hai bisogno che non siano memorizzabili nella cache, invece di decorare l'intero controller.
Se la tua classe o azione non ha avuto NoCache
quando è stato eseguito il rendering nel tuo browser e desideri verificarne il funzionamento, ricorda che dopo aver compilato le modifiche devi eseguire un "aggiornamento rapido" (Ctrl + F5) nel tuo browser. Fino a quando non lo fai, il tuo browser manterrà la vecchia versione memorizzata nella cache e non la aggiornerà con un "aggiornamento normale" (F5).