要点:
我在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。
答案 0 :(得分:2)
来自MSDN:
如果你正在进行进程中的会话状态(你希望不是这样),那么网络花园尤其棘手。根据我的经验,我发现网络花园很少人们认为它们的好处。由于Web园区允许使用多个进程,因此每个进程都有自己的应用程序状态副本,进程内会话状态,高速缓存和静态数据。 Web园不应该用于所有应用程序,特别是如果它们需要维护状态。在决定Web园模式是否合适之前,请务必对应用程序的性能进行基准测试。
使用Web园时,了解会话状态和循环法的工作原理非常重要。考虑其他应用程序池设置如何影响应用程序
也很重要
答案 1 :(得分:0)
工作进程之间没有关系。它们每个都有自己的缓存(因为它是进程内缓存)。也就是说,如果你让你的应用程序支持web-garden场景(即不依赖于进程中状态),它将更加健壮并且更容易扩展。将来添加另一台服务器会更容易,并创建一个Web场。
您可以打电话给YAGNI,但我认为以支持扩展的方式创建大多数Web应用程序只是常识。在你的情况下,我真的认为有4个不同的缓存是可以的,拥有一个网络花园实际上可以提高你网站的性能。