Разделяет ли рабочий процесс свой кэш вывода в AppPool?

Резюме:

У меня есть веб-сайт ASP.NET MVC в IIS с именем "Website", использующий AppPool с именем "WebsiteAppPool". WebsiteAppPool настроен для поддержки до 4 рабочих процессов, фактически создавая "веб-сад". Веб-сайт также настроен через web.config для включения OutputCaching с использованием CacheProfiles.

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

Мой вопрос -

Будет ли рабочий процесс AppPool 'совместно использовать выходной кэш или каждый рабочий процесс будет иметь выходной кэш, создавая 4 кэшированных копии через AppPool.

Замечания:

Моя главная проблема заключается в том, что это лишит преимущества использования кэшированного вывода, и мне лучше иметь один WorkerProcess для обслуживания кэшированного вывода, а не 4.

2 ответа

Решение

Из MSDN:

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

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

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

Между рабочими процессами нет никакой связи. Каждый из них имеет свой собственный кэш (так как это кэш-память в процессе). Тем не менее, если вы заставите ваше приложение поддерживать сценарий веб-сада (то есть не зависеть от состояния в процессе), оно будет более устойчивым и легче масштабируемым. В будущем будет проще добавить еще один сервер и создать веб-ферму.

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

Другие вопросы по тегам