Aby upewnić się, że JQuery nie buforuje wyników, w metodach ajax wstaw następujące:
$.ajax({
cache: false
//rest of your ajax setup
});
Lub, aby zapobiec buforowaniu w MVC, stworzyliśmy własny atrybut, możesz zrobić to samo. Oto nasz kod:
[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);
}
}
Następnie po prostu udekoruj swój kontroler [NoCache]
. LUB aby to zrobić, wystarczy umieścić atrybut na klasie klasy podstawowej, z której dziedziczysz kontrolery (jeśli masz taką), tak jak my tutaj:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Możesz również ozdobić niektóre akcje tym atrybutem, jeśli chcesz, aby nie były one buforowane, zamiast dekorować cały kontroler.
Jeśli twoja klasa lub akcja nie miała, NoCache
kiedy była renderowana w przeglądarce i chcesz sprawdzić, czy działa, pamiętaj, że po skompilowaniu zmian musisz wykonać „twarde odświeżenie” (Ctrl + F5) w przeglądarce. Do tego czasu przeglądarka zachowa starą wersję z pamięci podręcznej i nie odświeży jej za pomocą „normalnego odświeżenia” (F5).