HttpContext.Current.Cache的范围

时间:2015-04-30 19:33:15

标签: asp.net caching httpcontext

如果我在同一服务器上运行的多个网站中有以下行,那么该应用程序写入同一缓存记录会出现任何问题吗?

HttpContext.Current.Cache["SearchResults"] = myDataTable;

我知道文档说每个应用域都有一个缓存,但我不太明白这意味着什么。

  

https://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache   每个应用程序域都有一个Cache类实例。作为一个   结果,Cache属性返回的Cache对象是   缓存应用程序域中所有请求的对象。

1 个答案:

答案 0 :(得分:1)

应用程序域是公共语言基础结构(CLI)中使用的一种机制(类似于操作系统中的进程),用于将已执行的软件应用程序彼此隔离,以使它们不会相互影响。

因此,当您写入缓存时,它将存储在该应用程序域的内存中,如果您有Web园(具有多个工作进程)或Web场,那么请求可能由diff worker proc / node提供,然后那些node / work proc无法访问缓存,因为它们完全是差异应用域。

所以它说明缓存是针对单个app域的,为了解决上述问题,你需要寻找集中式缓存存储。