Чтобы убедиться, что JQuery не кэширует результаты, в ваших методах ajax добавьте следующее:
$.ajax({
cache: false
//rest of your ajax setup
});
Или чтобы предотвратить кэширование в MVC, мы создали наш собственный атрибут, вы можете сделать то же самое. Вот наш код:
[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);
}
}
Тогда просто украсьте свой контроллер с [NoCache]
. ИЛИ, чтобы сделать это для всех, вы можете просто поместить атрибут в класс базового класса, от которого вы наследуете свои контроллеры (если он у вас есть), как у нас здесь:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Вы также можете украсить некоторые действия этим атрибутом, если вам нужно, чтобы они не кэшировались, вместо того, чтобы украшать весь контроллер.
Если у вашего класса или действия не было времени, NoCache
когда они отображались в вашем браузере, и вы хотите проверить его работоспособность, помните, что после компиляции изменений вам нужно выполнить «жесткое обновление» (Ctrl + F5) в вашем браузере. Пока вы этого не сделаете, ваш браузер сохранит старую кэшированную версию и не обновит ее «обычным обновлением» (F5).