Резюме:
У меня есть веб-сайт ASP.NET MVC в IIS с именем «Веб-сайт», использующий пул приложений с именем «WebsiteAppPool». WebsiteAppPool настроен для поддержки до 4 рабочих процессов, фактически создавая «веб-сад». Веб-сайт также настраивается с помощью web.config для включения кэширования вывода с использованием CacheProfiles.
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<clear />
<add name="ControllerNameActionName" duration="43200" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Мой вопрос -
Будут ли рабочие процессы AppPool совместно использовать выходной кеш или каждый рабочий процесс будет иметь выходной кеш, поэтому будет создано 4 кэшированных копии в AppPool.
Примечание:
Меня больше всего беспокоит то, что это опровергнет преимущества кэшированного вывода, и мне было бы лучше, если бы один WorkerProcess обслуживал кешированный вывод, а не 4.
Из MSDN:
Поскольку веб-сады позволяют использовать несколько процессов, каждый процесс будет иметь свою собственную копию состояния приложения, состояния сеанса в процессе, кешей и статических данных. Веб-сады не следует использовать для всех приложений, особенно если им необходимо поддерживать состояние. Обязательно проверьте производительность приложения, прежде чем решить, подходит ли режим веб-сада.
При использовании веб-сада важно понимать, как работают состояние сеанса и циклический перебор. Также важно учитывать, как другие настройки пула приложений влияют на приложение.
Веб-сады особенно неприятны, если вы выполняете состояние сеанса в процессе (чего, надеюсь, вы все равно не делаете). По своему опыту я считаю, что веб-сады редко выгода, которую люди думают о себе.