【问题标题】:Prevent caching on ASP MVC site running on IIS 7.5防止在 IIS 7.5 上运行的 ASP MVC 站点上进行缓存
【发布时间】:2011-08-24 02:46:33
【问题描述】:

我有一个在 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);
    }

【问题讨论】:

  • 您完全确定数据不只是旧数据本身吗?我很确定 MVC 默认不会缓存所有内容。我不记得曾经遇到过这个问题
  • 嗨,吉米 - 是的,我确定。数据得到更新,我可以在使用管理工作室的 SQL 中看到,但该站点仍显示旧数据。
  • 吉米是对的。默认情况下,MCV 不应缓存,IIS 也不应缓存。你能更具体地说明你在做什么吗?您的代码执行了哪些操作,您希望发生什么?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我们正在使用 Ajax(Telerik 控件),但我们关闭了 Ajax,我们仍然得到相同的陈旧数据
    【解决方案3】:

    这并不像浏览器缓存本身的问题那么简单吗? 尝试添加无缓存元标记?

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

    只是一个想法,您也可以设置无缓存标头。也许使用 Fiddler 来检查没有缓存响应的浏览器。

    【讨论】:

    • 我会尝试,但如果 2 个人登录,他们会得到相同的陈旧数据
    【解决方案4】:

    已解决!!!

    它是 NHibernate!

    每次调用都使用同一个会话,而不是每个请求一个会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多