Я разрабатываю (относительно небольшой) веб-сайт на ASP.Net 2.0. Я также использую nAnt для легкой настройки моего проекта перед доставкой исполняемых файлов. В текущем состоянии веб-сайт "предварительно скомпилирован" с использованием
aspnet_compiler.exe -nologo -v ${Appname} -u ${target}
Я заметил, что после перезапуска пула IIS (после завершения работы в режиме ожидания или перезапуска) приложению требуется до 20 секунд, прежде чем оно вернется в оперативный режим (и будет достигнут Application_start).
У меня нет такой же проблемы, когда я отлаживаю непосредственно в Visual Studio (для запуска требуется 2 секунды), поэтому мне интересно, действительно ли aspnet_compiler - такая хорошая идея.
Я не нашел много на MSDN. Как вы компилируете свои веб-сайты для производства?





Удостоверься что:
Если вы пробовали это, вы могли бы попробовать запустить ngen над своей сборкой, сэкономив время JIT?
Убедитесь, что это установлено в web.config <compilation debug=false>. В моем случае у меня также есть пакетный файл, который выдает запросы Get для всех основных страниц перед отправкой пользователям (моделирование загрузки страницы).
@Simon:
(И я обязательно посмотрю на ngen, я не знал об этом инструменте.)
Если ваш веб-сайт скомпилирован как обновляемый, вы увидите кучу файлов .ASPX в своем виртуальном каталоге. Они должны быть скомпилированы при запуске. Это значит, что вы можете войти и изменить сам веб-интерфейс. Это значение по умолчанию как для веб-сайтов, так и для веб-приложений.
Для максимальной отзывчивости не позволяйте вашему приложению завершать работу.
Первый метод - убедиться, что он невероятно популярен, чтобы им всегда кто-то пользовался.
В качестве альтернативы, получение крошечной страницы проверки активности откуда-то еще в качестве запланированного действия можно использовать для поддержания вашего сайта в «горячем» состоянии.
Мне интересно, что два человека проголосовали против моего ответа без комментариев, несмотря на то, что это реалистичный подход, используемый некоторыми очень большими системами. Обратите внимание, что DotNetNuke включает keepalive.aspx именно для этой цели.
Не я, но я бы предположил, что отрицательные голоса вызваны тем, что это не сокращает время запуска. Кроме того, в IIS7.5 / .Net 4 в этом нет необходимости, поскольку ASP .Net 4.0 поставляется с функцией автоматического запуска, которая выполняет то же самое.
Главное - убедиться, что пул приложений IIS никогда не завершается. Здесь фактически размещен код. Установите для параметра «Тайм-аут простоя» (в дополнительных настройках) какое-то очень высокое значение, например 1440 минут (24 часа), чтобы убедиться, что он не отключится, пока кто-то посещает ваш сайт один раз в день.
У вас по-прежнему будет время JIT всякий раз, когда вы развертываете новый код или если этот период простоя будет превышен без какого-либо трафика.
Я думаю, что проблема веб-приложений и сайтов на самом деле может быть связана с обновляемым битом, как упоминает Уилл - мои приложения не помечены как обновляемые. Я думаю, что вы, вероятно, правы насчет организации, мне нужно немного больше, чтобы подтвердить.