Назад | Перейти на главную страницу

Совместно ли рабочий процесс с кешем вывода в AppPool?

Резюме:

У меня есть веб-сайт 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:

Поскольку веб-сады позволяют использовать несколько процессов, каждый процесс будет иметь свою собственную копию состояния приложения, состояния сеанса в процессе, кешей и статических данных. Веб-сады не следует использовать для всех приложений, особенно если им необходимо поддерживать состояние. Обязательно проверьте производительность приложения, прежде чем решить, подходит ли режим веб-сада.

При использовании веб-сада важно понимать, как работают состояние сеанса и циклический перебор. Также важно учитывать, как другие настройки пула приложений влияют на приложение.

Веб-сады особенно неприятны, если вы выполняете состояние сеанса в процессе (чего, надеюсь, вы все равно не делаете). По своему опыту я считаю, что веб-сады редко выгода, которую люди думают о себе.