如何在asp.net站点的jquery中防止缓存

时间:2012-12-13 21:00:12

标签: jquery asp.net-mvc

我有一个带有asp.net的MVC4应用程序,jquery项目在第一次加载所有页面,然后通过ajax更新内容。

在注销应用程序后,所有页面都保留在缓存中。这导致在下次登录时,新数据与旧数据混合或重复某些数据。

如何在注销时删除所有缓存?

1 个答案:

答案 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);
    }