工作进程是否在 AppPool 内共享其输出缓存?

工作进程是否在 AppPool 内共享其输出缓存?

概括:

我在 IIS 中有一个名为“Website”的 ASP.NET MVC 网站,使用名为“WebsiteAppPool”的 AppPool。WebsiteAppPool 配置为允许最多 4 个工作进程,实际上创建了一个“Web Garden”。该网站还通过 web.config 配置为使用 CacheProfiles 启用 OutputCaching。

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <clear />
      <add name="ControllerNameActionName" duration="43200" varyByParam="*" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

我的问题是 -

AppPool 的工作进程是否共享输出缓存,或者每个工作进程是否都有输出缓存,从而在 AppPool 中创建 4 个缓存副本。

笔记:

我主要担心的是,这会抵消缓存输出的好处,我最好让一个 WorkerProcess 而不是 4 个来提供缓存输出。

答案1

微软

由于 Web 园允许使用多个进程,因此每个进程都有自己的应用程序状态、进程内会话状态、缓存和静态数据副本。Web 园不适用于所有应用程序,尤其是当它们需要维护状态时。在决定 Web 园模式是否合适之前,请务必对应用程序的性能进行基准测试。

使用 Web 园时,了解会话状态和循环机制的工作方式非常重要。考虑其他应用程序池设置如何影响应用程序也很重要

如果你正在处理进程内会话状态(但愿你不会这样做),那么网络花园尤其难以处理。根据我的经验,我发现网络花园很少人们认为它们是有益的。

相关内容