2012-04-09 85 views
6

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

回答

3

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

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

+0

你是对的,谢谢。我也做了我自己的挖掘(通过反射器)并提供更多信息。主要的ASP.NET Cache对象(最终)将自己实现为托管HashTable。没有COM伏都教,我一直期待。看起来所有的ASP.NET缓存都是通过托管代码完成的,即所有缓存对象都存储在w3wp.exe的地址空间中。 – 2012-04-09 22:30:51

+0

为了进一步支持,我一直认为回收应用程序池会从'HttpContext.Cache'驱逐项目。我找不到任何支持信息,但是这导致我相信它存储在相应的'w3wp.exe'实例的内存中。 – wsanville 2012-04-09 22:33:01

+0

是的,支持信息是缓存存储为HashTable(检出System.Web.Caching.CacheSingle类)。根本没有非托管代码。现在我们都知道了。 :) – 2012-04-09 22:38:29