ASP.NET高速缓存的位置
问题描述:
在IIS 7中如何管理ASP.NET高速缓存?我知道它存储在服务器的内存中,但管理它的过程是什么?它是在w3wp.exe的地址空间中,还是在另一个进程/位置?会话数据是否使用缓存,或Session的工作方式不同?ASP.NET高速缓存的位置
答
您可以配置会话数据存储在web.config
中的sessionState element的位置。如果设置为InProc
,它将存储在与应用程序的App Pool相对应的w3wp.exe
进程的内存中。例如,您也可以将其存储在SQL Server实例中。
如果在配置文件中未定义该元素,请查看目标框架版本/体系结构的计算机级别web.config
。
你是对的,谢谢。我也做了我自己的挖掘(通过反射器)并提供更多信息。主要的ASP.NET Cache对象(最终)将自己实现为托管HashTable。没有COM伏都教,我一直期待。看起来所有的ASP.NET缓存都是通过托管代码完成的,即所有缓存对象都存储在w3wp.exe的地址空间中。 – 2012-04-09 22:30:51
为了进一步支持,我一直认为回收应用程序池会从'HttpContext.Cache'驱逐项目。我找不到任何支持信息,但是这导致我相信它存储在相应的'w3wp.exe'实例的内存中。 – wsanville 2012-04-09 22:33:01
是的,支持信息是缓存存储为HashTable(检出System.Web.Caching.CacheSingle类)。根本没有非托管代码。现在我们都知道了。 :) – 2012-04-09 22:38:29