![工作进程是否在 AppPool 内共享其输出缓存?](https://linux22.com/image/500858/%E5%B7%A5%E4%BD%9C%E8%BF%9B%E7%A8%8B%E6%98%AF%E5%90%A6%E5%9C%A8%20AppPool%20%E5%86%85%E5%85%B1%E4%BA%AB%E5%85%B6%E8%BE%93%E5%87%BA%E7%BC%93%E5%AD%98%EF%BC%9F.png)
概括:
我在 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 园时,了解会话状态和循环机制的工作方式非常重要。考虑其他应用程序池设置如何影响应用程序也很重要
如果你正在处理进程内会话状态(但愿你不会这样做),那么网络花园尤其难以处理。根据我的经验,我发现网络花园很少人们认为它们是有益的。