【问题标题】:Unwanted ASP.Net MVC3 server side caching不需要的 ASP.Net MVC3 服务器端缓存
【发布时间】:2011-11-30 15:47:27
【问题描述】:

我正在开发一个 MVC3 应用程序,但遇到了对象被无意缓存的问题。 我的代码是通过调用一个单独的自定义业务逻辑 dll 创建对象。 此业务逻辑 dll 从数据库中获取数据。 更改数据库中的数据后,即使关闭浏览器并重新运行应用程序,我仍然会看到旧数据。这不是浏览器缓存问题,因为我在开发环境中调试时可以看到它。

在开发中,如果我停止 asp.net 开发服务器,然后重新运行应用程序,我会得到新数据。 在 IIS 中,如果我重新启动网站,我会得到新数据。

知道为什么 asp.net 会缓存和重用这些对象,即使它们超出了范围?

业务逻辑 dll 确实内置了一些缓存,所以这可能是主要问题。在这种情况下,我想问题是是否有某种方法可以告诉 asp.net 在会话结束后清除对象。

【问题讨论】:

    标签: asp.net asp.net-mvc-3 asp.net-caching


    【解决方案1】:

    在 ASP.NET MVC3 中默认没有缓存,至少没有缓存数据。确保您的 IIS 设置正确,并且您不会意外使用 OutputCacheAttribute。

    至于业务层的缓存:这两天我看到了至少三个缓存相关的问题。请记住:缓存很棘手,静态变量也是如此。如果没有必要,请不要这样做。缓存非常强大,但也很危险。前面提到的OutputCacheAttribute也是如此。

    【讨论】:

      【解决方案2】:

      在我看来,您是在静态创建数据上下文,而不是创建一个新上下文并在请求后销毁它。由于很多原因,这是一件坏事。

      当您说业务层具有“一些缓存”时,这是什么意思?你是怎么缓存的?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-09
        • 2021-01-16
        • 2013-02-12
        • 1970-01-01
        • 2016-05-25
        • 2013-12-14
        • 1970-01-01
        • 2016-01-24
        相关资源
        最近更新 更多