【问题标题】:Location of the ASP.NET CacheASP.NET 缓存的位置
【发布时间】:2012-04-22 05:59:31
【问题描述】:

在 IIS 7 中如何/在哪里管理 ASP.NET 缓存?我知道它存储在服务器的内存中,但是管理它的进程是什么?它是在 w3wp.exe 的地址空间中,还是在另一个进程/位置? Session 数据使用缓存,还是 Session 工作方式不同?

【问题讨论】:

    标签: asp.net caching iis-7


    【解决方案1】:

    您可以使用sessionState element 配置会话数据在web.config 中的存储位置。如果设置为InProc,它将存储在与您的应用程序的App Pool 对应的w3wp.exe 进程的内存中。例如,您还可以将其存储在 SQL Server 实例中。

    如果该元素未在您的配置文件中定义,请查看机器级别 web.config 的目标框架版本/架构。

    【讨论】:

    • 你是对的,谢谢。我也进行了自己的挖掘(通过 Reflector)并提供了更多信息。主 ASP.NET Cache 对象(最终)将自身实现为托管 HashTable。没有我半途而废的 COM 巫术。看起来所有 ASP.NET 缓存都是通过托管代码完成的,即所有缓存对象都存储在 w3wp.exe 的地址空间中。
    • 为了进一步支持这一点,我一直认为回收应用程序池会从HttpContext.Cache 驱逐项目。我找不到任何支持信息,但这让我相信它存储在内存中 w3wp.exe 的相应实例中。
    • 是的,支持信息是缓存存储为 HashTable(查看 System.Web.Caching.CacheSingle 类)。根本没有非托管代码。现在我们都知道了。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多