Разделяет ли рабочий процесс свой кэш вывода в 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 разных кеша, а наличие веб-сада действительно может повысить производительность вашего сайта.