ASP.NET缓存的位置

6

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

1个回答

3
您可以通过 sessionState 元素 在您的 web.config 中配置 Session 数据存储位置。如果设置为 InProc,则会将其存储在应用程序 App Pool 对应的 w3wp.exe 进程中的内存中。例如,您还可以将其存储在 SQL Server 实例中。
如果您的配置文件中未定义该元素,请查看目标框架版本/体系结构的机器级 web.config。

你说得对,谢谢。我也自己查了一下(通过Reflector),并找到了更多信息。主要的ASP.NET缓存对象(最终)实现为托管的HashTable。没有我半信半疑地期望的COM魔法。看起来所有的ASP.NET缓存都是通过托管代码完成的,即所有缓存对象都存储在w3wp.exe的地址空间中。 - Vince Fedorchak
为了进一步支持这一点,我一直认为回收应用程序池将从HttpContext.Cache中驱逐项目。我找不到任何支持信息,但这让我相信它存储在相应的w3wp.exe实例的内存中。 - wsanville
是的,支持信息是缓存存储为哈希表(请查看System.Web.Caching.CacheSingle类)。没有任何非托管代码。现在我们都知道了。 :) - Vince Fedorchak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接