【问题标题】:Scope of HttpContext.Current.CacheHttpContext.Current.Cache 的范围
【发布时间】:2015-04-30 19:33:14
【问题描述】:

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

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

我知道文档说每个应用程序域有一个缓存,但我不太明白这是什么意思。

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

【问题讨论】:

  • 您的多个应用程序没有写入同一个缓存。只是缓存变量的名字是一样的。
  • 您的应用中是否设置了网络花园或网络农场?
  • 我不知道这些是什么,不。网站很简单 asp.net。
  • @GER,请参考我发布的答案,我想知道您对此是否有任何疑问,然后我发现您很想知道这些是什么。

标签: asp.net caching httpcontext


【解决方案1】:

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

因此,当您写入缓存时,它将存储在该应用程序域的内存中,如果您有网络花园(具有多个工作进程)或网络农场,那么请求可能由 diff worker proc/node 提供服务,然后那些节点/工作过程无权访问缓存,因为它们是完全不同的应用程序域。

所以说缓存是针对单个应用程序域的,要解决上述问题,你需要寻找集中式缓存存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多