2008-09-11 6 views
5

Я разрабатываю (относительно небольшой) сайт в ASP.Net 2.0. Я также использую nAnt для выполнения простой настройки в моем проекте перед доставкой исполняемых файлов. В своем нынешнем состоянии, веб-сайт является «предкомпилированным» с помощьюПредварительная подготовка и время запуска на ASP.Net

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

Я заметил, что после того, как пул IIS перезапускается (после простоя остановки или повторного использования), приложение занимает до За 20 секунд до того, как он снова подключится к сети (и Application_start).

У меня нет такой же проблемы, когда я отлаживаю непосредственно в Visual Studio (требуется 2 секунды для запуска), поэтому мне интересно, действительно ли aspnet_compiler - такая хорошая идея.

Я не мог найти много на MSDN. Как вы собираете свои веб-сайты для производства?

ответ

4

Убедитесь, что:

  1. Вы используете проект веб-приложения, а не проект веб-сайта, то это приведет к скомпилированного двоичного файла для кода за
  2. Вы выключили поколение отладки кода в файл web.config - Я думаю, если это другое, когда вы использовали aspnet_compiler код может быть повторно

Если вы уже пробовали те, вы могли бы, возможно, попробовать запустить NGEN над узлом, таким образом, экономя время JIT?

1

Убедитесь, что это установлено в web.config <compilation debug=false>. В моем случае у меня также есть пакетный файл, который выдает запросы на получение всех основных страниц перед тем, как давать пользователям (имитация загрузки страницы).

0

@Simon:

  • Проект представляет собой веб-приложение. Веб-сайты затем медленнее запускаются (я и не подозревал, что у него была заболеваемость, помимо другой организации кода)?
  • Я проверил, и пока я редактирую web.config после вызова aspnet_compiler, я не касаюсь значения отладки (однако, я проверю, что веб-сайт не запускается быстрее, если я не касаюсь web.config, просто чтобы убедиться)

(И я, безусловно, взглянуть на НГЕНЕ, я не знал об этом инструменте.)

+0

Я думаю, что веб-приложения против сайтов, что может быть на самом деле делать с обновляемым немного, как говорится Will - мои приложения не отмечены обновляемым. Я думаю, вы, вероятно, правы в организации, мне нужно будет немного больше играть, чтобы подтвердить. – 2008-09-11 17:23:50

2

Если ваш сайт скомпилирован как обновляемые, вы увидите кучу .ASPX в вашем виртуальном каталоге. Они должны быть скомпилированы при запуске. Вот так вы можете войти и изменить собственный веб-интерфейс. Это значение используется как для веб-сайтов, так и для веб-приложений.

4

Для обеспечения максимальной достоверности не допускайте отключения приложения.

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

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

+0

Мне интересно, что два человека проголосовали за мой ответ без комментариев, несмотря на то, что это реалистичный подход, используемый некоторыми очень большими системами. Обратите внимание, что DotNetNuke включает keepalive.aspx для этой цели. – 2008-10-12 20:18:42

1

Ключ должен быть уверен, что пул приложений IIS никогда не выключается. Здесь код фактически размещен.Установите «Idle Timeout» (в дополнительных настройках) на что-то действительно высокое, например, 1440 минут (24 часа), чтобы убедиться, что он не закрыт, пока кто-то попадает на ваш сайт один раз в день.

У вас по-прежнему будет время JIT, когда вы развертываете новый код, или если этот период ожидания ожидания превышен без какого-либо трафика.

Configuring IIS 7.x Idle Timeout

Смежные вопросы