我有一个带有asp.net的MVC4应用程序,jquery项目在第一次加载所有页面,然后通过ajax更新内容。
在注销应用程序后,所有页面都保留在缓存中。这导致在下次登录时,新数据与旧数据混合或重复某些数据。
如何在注销时删除所有缓存?
答案 0 :(得分:1)
我假设浏览器是缓存页面的浏览器。如果是这种情况,则无法在注销时从浏览器中删除缓存。
相反,您需要告诉浏览器不要缓存任何页面。
您可以使用简单的操作过滤器执行此操作,并覆盖OnResultExecuting
方法
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);
base.OnResultExecuting(filterContext);
}