2008-08-25 4 views
12

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

Я предварительно скомпилировал сайт, но ничего не изменилось.

У меня нет кода при запуске приложения. У меня нет кэшированных предметов.

Любые идеи? Как я могу узнать, что происходит?

ответ

11

Это только ваш домен приложения, загружающий и загружающий любые двоичные файлы в память. Кроме того, он инициализирует статические переменные, поэтому, если у вас есть статическая переменная, которая загружает большое количество данных из db, это может занять немного времени.

+0

Несомненно, это ошибка дизайна при запуске веб-сайта, так это медленно? – 2017-09-20 11:48:46

0

Звучит очень похоже на сбор фоновых изображений; хотя, если вы предварительно компилируете, это не должно быть проблемой.

Первое, что я хотел бы посмотреть, это ваш ORM (если есть). NHibernate, в частности, имеет серьезное наказание за запуск, поскольку он запускает несколько компиляторов в фоновом режиме при запуске, чтобы превратить каждый класс в ваш уровень данных в свою собственную сборку в памяти.

2

Когда вы опубликовали сайт, вы решили сделать сайт «обновляемым» в настройках публикации сайта или нет? Если я хорошо помню, файл aspx/ascx нужно также скомпилировать, и если они «обновляемы», то первый запуск приведет к перекомпиляции этих ресурсов.

0

Просто быстрый кивок в Даррен. Это типичное поведение приложения .NET после обновления DLL. После начальной загрузки все должно быть просто отлично.

0

Когда вы говорите «предварительно скомпилировать» сайт, используете ли вы утилиту aspnet_compiler для предварительной компиляции или просто используете параметр «Создать сайт» в Visual Studio?

Если вы не являетесь первым, я рекомендую giving it a spin. В сочетании с Web Deployment Projects вам должно быть проще развертывать ваш сайт для каждой версии.

0

Первоначально медлительность пару вещей:

  • AppDomain в настоящее время в программу настройки
  • ASP.NET является разбор и составление страниц ASPX.
  • Инициализируются глобальные контексты.

Это обычное поведение для ASP.NET.

0

@Mickey: Нет, это отключено. Нужно ли включать его, чтобы узнать?

Журнал трассировки покажет вам, сколько времени требуется для каждого действия. Это может помочь вам найти то, что так долго.

Here - это ссылка, которая может помочь вам настроить ее.

1

Попробуйте очистить журнал событий?

1

Убедитесь, что вы публикуете приложение в 'release', а не 'debug'. Я заметил, что это значительно сокращает время загрузки. Файл web.config будет обновлен.

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