阻止在IIS 7.5上运行的ASP MVC站点上的缓存

时间:2011-05-12 13:00:54

标签: sql-server asp.net-mvc nhibernate iis caching

我在IIS 7.5上运行了一个ASP MVC 3站点,我无法阻止它进行缓存。

我已经通过向网站添加“* Do Not Cache”条目禁用了IIS中的输出缓存,并且还在控制器上添加了一个动作过滤器,用于阻止缓存的结果执行(请参阅下面的代码)但是当我使用网站,它仍在缓存。我已从Internet Explorer和Firefox中删除了所有历史记录和Cookie等,但我仍然看到旧数据。

有没有人有任何想法或建议我还能采取什么措施来阻止这种情况?

提前致谢,

詹姆斯

更新

我使用SQL分析器进一步挖掘它似乎是缓存查询的SQL服务器。可能是这种情况吗?

第二次更新

我现在知道definitley是不是SQL缓存,现在正在查看IIS和MVC

解决!!!

这是NHibernate!

每个呼叫使用相同的会话而不是每个请求的会话。

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

4 个答案:

答案 0 :(得分:2)

您可以尝试将OutputCach属性添加到操作中,并将持续时间设置为几秒钟。 例如: [OutputCache(Duration = 1,VaryByParam =“none”)]

答案 1 :(得分:1)

你是通过JQuery ajax调用你的MVC动作吗?如果是这样,请参阅:http://www.peteonsoftware.com/index.php/2010/08/20/the-importance-of-jquery-ajaxsetup-cache/

答案 2 :(得分:0)

它不像浏览器缓存本身的问题那么简单吗? 尝试添加no-cache元标记?

<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>

只是想一想,你也可以设置no-cache标头。也许使用Fiddler检查浏览器没有缓存响应。

答案 3 :(得分:0)

<强>解决!!!

这是NHibernate!

每个呼叫使用相同的会话而不是每个请求的会话。