Почему страницы ASP.NET намного медленнее на локальном хосте, чем на производственном сервере

Название в значительной степени подводит итог, и я уверен, что существует вполне обоснованное объяснение,
но кажется странным, что загрузка страниц (после их компиляции) на моем локальном компьютере кажется навсегда, когда тот же самый код быстро взлетает, когда "живет".

Я разрабатываю Vista, IIS7, довольно хорошо аппаратное обеспечение; а сервер - это одна машина, работающая под управлением Windows Server 2003 и IIS6 на Xeon < 3 ghz и гигабитной линии.

Конечно, я понимаю, что веб-сервер специально предназначен для такого вида деятельности,
но все же кажется странным, что машина, обслуживающая до 2-300 сеансов одновременно  (распространяются неравномерно на ~ 5 приложений .Net 2.0) через удаленную сеть (например, интернет;-)
намного быстрее при представлении страниц, по сравнению с запуском кода локально...

Просто то, что было у меня на уме какое-то время...

UPDATE
Большое спасибо за ответы! Просто подумал, что добавлю несколько моментов:

  • Попробовали удалить все препятствия, окружающие мой localhost; отключил брандмауэр и антивирус, прекратил заливать молоко в компьютерный чехол, убил любые тяжелые процессы и т.д.
  • Это не относится к одному проекту или приложению; это то, что я заметил и задавался вопросом, так как я начал работать разработчиком (~ 1 год).
  • Не думайте, что недоступные ресурсы имеют какое-либо значение; при работе на локальном компьютере я обычно располагаю всеми объектами проекта (изображениями, вспышкой и т.д.) локально.
  • Невозможно увидеть какой-либо разностный кеширующий кеш.

Выберите случайную страницу из проекта, над которым я сейчас работаю, перезагрузив его несколько раз; локально я получил его примерно через 4 секунды, по сравнению с ~ 2 с от сервера. Это использовало FF и Firebug; используя Opera, я ощущал меньшую разницу, но это только моя кишка...

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

Ответ 1

Хорошо... после обновления моей машины ([email protected], 1TB > 100 мб/с поискового диска) Я вижу, что без разницы даже при том, что этот компьютер выполняет работы (MS SQL server, IIS) по сравнению с тем же страница, размещенная на GoDaddy. Когда я задавал свой внутренний вопрос, у меня была несколько меньшая машина и сравнивала ее с моими выделенными серверами. Таким образом, ответ на вопрос в основном: Они не. Спасибо за все ваши ответы, хотя!

Ответ 2

Если вы используете FireFox или Safari, и вы находитесь в Windows Vista, вам следует отключить IP-версию 6, поскольку это связано с Vista в сочетании с WebDev и FireFox/Safari...

В FF введите примерно: config в адресной строке, выберите фильтр для "IPv6" и установите значение FALSE!

Это ошибка с IPv6 в Windows Vista и весьма вероятный кандидат на ваши проблемы...

Ответ 3

Для этого есть как минимум две причины:

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

  • Во-вторых, каждый раз, когда вы меняете код своих страниц или перезагружаете сервер, все страницы должны быть перекомпилированы, и это занимает некоторое время.

На вашем рабочем сервере страницы компилируются один раз, а затем скомпилированная версия предоставляется всем пользователям, и вы, вероятно, не работаете в режиме отладки (надеюсь!).

Ответ 4

Нет причин, по которым приложение не должно запускаться быстро локально в описанной вами настройке - возможно, у вас есть что-то еще.

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

Ответ 5

Вы также можете проверить, пытается ли ваш сайт получить доступ к недоступному контенту (недоступным URL-адресам) с вашей машины разработки. У меня была эта проблема несколько раз раньше.

Ответ 6

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

Ответ 7

Действительно ли вы выполняете это через IIS7 или он действительно работает через Visual Studio ASP.NET Development Server? Если последнее, ну... это прямо есть огромная причина. ASP.NET Development Server оптимизирован для отладки приложений, а не для их быстрого запуска.

Другая половина проблемы заключается в том, что вы на самом деле не говорили нам о спецификациях вашей машины, а только о том, что это "нормально аппаратное обеспечение", обычно это не показатель, когда дело доходит до компьютера. Vista выделяет некоторые ресурсы, как с его новым менеджером дисплеев (для рабочего стола Aero Glass), так и с тенденцией предварительно загружать приложения в оперативную память.

Также звучит так, будто вы также можете запускать сервер базы данных со своего рабочего стола, что избавляет от большего количества ресурсов, которые серверные машины не будут использовать, поскольку они, скорее всего, будут иметь (a) отдельные серверы баз данных.

Ответ 8

Вы считали, что это может быть из-за кеширования? то есть страницы на производственном сервере кэшируются, а те, что на localhost, не кэшируются.

Я также согласен с terjetyl, возможно, что ваш localhost не может найти связанный файл (например, исходный файл javascript), ваш брандмауэр может блокировать эти....

Ответ 9

ЕСЛИ на сервере есть вещи, которые нужно получить приложению, это значительно замедлит работу - да, я видел места, где был производственный сервер, на котором размещалась единственная система баз данных, доступная всей компании, как для производства, так и для развития.

Ответ 10

В игре участвуют миллионы вещей: более быстрая сеть; лучший сервер БД, работающий в течение длительного времени и имеющий все запросы, уже выполненные до этого;... возможно, из-за Vista:)