Подтвердить что ты не робот

ASP.NET MVC - Медленная начальная загрузка

Недавно я создал веб-приложение asp.net mvc и опубликовал его в Интернете.

При первой загрузке сайта вы обнаружите, что для его фактического отображения требуется около 10-15 секунд, однако после того, как он щелкнул один раз, он загружается так же быстро, как я ожидаю во второй раз. Мне просто интересно, может ли кто-нибудь понять, почему веб-сайт занимает так много времени?

4b9b3361

Ответ 1

Обычно приложение всегда занимает немного дополнительного времени для загрузки по мере запуска домена приложения.

Все, что может усугубить это, может быть что угодно: от плохо написанного кода (IE: Application_Start) до определенных библиотек, которые вы можете использовать (например, ORM). Сколько модулей вы загрузили?

Для начала проверьте свой web.config на печально известный <compilation debug="true">. Это может иметь значительные последствия для производительности в производственной установке. Установите значение "false"!

Рекомендовать googling что-то в строках " улучшить время запуска приложения" и искать вещи, которые могут относиться к вашему конкретному приложению.

Обновление с вашего первого комментария:

Если вы снова видите запуск приложения (зависает в течение нескольких секунд) через 30 минут, это, скорее всего, связано с настройками утилиты пула приложений в IIS.

Перейдите в диспетчер IIS (это предполагает v7 +):

  • Пулы приложений
  • Щелкните правой кнопкой мыши пул, используемый для вашего приложения (ов).
  • Выберите "Recycling", появится окно с надписью "Recycling Условия "
  • Проверьте эти настройки, так как они будут определять, когда автоматически убить пул приложений и перезапустить его.

С точки зрения общей производительности вы можете попробовать:

  • Добавление некоторых отладочных заявлений, которые выплюнули прошедшее время в вашем Application_Start() или любое другое подходящее место, чтобы попробовать чтобы поймать, что занимает самое длинное.
  • Создайте полностью чистый демонстрационный проект и разверните его. Посмотрите, страдает от одной и той же проблемы. Если он не пытается ввести больше и больше вашего реального кода, пока вы не заметите замедление.

Если вы на самом деле stumped # 2, возможно, ваш лучший выбор, хотя он, вероятно, будет самым медленным вариантом.

Ответ 2

У меня также была такая же проблема, с медленной загрузкой первых сайтов asp.net mvc, наконец, я нашел лучший способ для загрузки сайта, чрезвычайно быстрый при первой загрузке.

Мое решение для Windows Server 2008 r2 и IIS 7.5, но в верхних окнах также работают и верхние версии iis с некоторыми простыми различиями.

Прежде всего, вы должны всегда устанавливать startMode вашего пула приложений, это приведет к тому, что ваш пул приложений не сможет спать через некоторое время. (в моем случае только этот шаг меняет мои сайты на первую нагрузку от 45-55 секунд до 8-12 секунд).

на первом этапе нет первого запроса на ваш сайт, для предварительной загрузки вашего сайта нам нужен еще один шаг, то есть установка модуля инициализации приложения для iis7.5 из здесь

на втором шаге, вы должны установить preloadEnabled = true для вашего сайта, этот параметр - это то, что инициализация приложения добавлена ​​к настройкам сайта.

Для получения дополнительной информации и того, как вы можете установить эту опцию, обратитесь к этому сообщению в блоге: http://blogs.iis.net/wadeh/application-initialization-part-2

после второго шага мой веб-сайт загружается всего через 1-3 секунды.

Ответ 3

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

Ответ 4

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

Ответ 5

Существует несколько шагов для реализации:

  • Клиентский кэш на стороне клиента
  • Объединение и минимизация
  • Серверный кэш сервера
  • Настройка автоматического запуска с помощью диспетчера IIS