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)으로 새로 고치지 않습니다.