Почему веб-сайт ASP.Net может загружаться медленно? [закрыто]

9

К счастью, я посетил множество веб-сайтов .aspx, которые требуют значительного времени загрузки для каждой страницы.

Мой опыт уникален?

Если нет, то почему веб-сайт ASP.Net может загружаться медленно?

Изменить: это сейчас около 7 лет спустя (29.12.2017). Хорошей новостью является то, что я больше не вижу этой проблемы, возможно, потому что Google начал наказывать сайты, которые загружаются слишком медленно. Теперь я использую ASP.NET MVC с хорошими результатами, в настоящее время работающем на частных виртуальных серверах Vultr (Azure был слишком медленным, когда мы его пробовали.) Некоторые из худших нарушителей, которые я вижу сейчас, - это системы CMS, такие как Wordpress и Drupal, вероятно, работающие на аппаратное обеспечение, которое слишком медленное или недостаточно определенное для объема трафика, который получает сайт. -HK1

HK1
источник
10
Может быть много факторов в игре. Сайт, который вы используете в данный момент, построен на .NET, и обычно он очень быстрый (за вычетом простоев / периодов обслуживания). Разработчики этих сайтов могут передавать вам тонны данных, или медленные соединения, или перегруженные серверы и т. Д. И т. Д. И т. Д. И т. Д. Это также может быть восприятием в игре.
wkl
4
@birryree Вы должны добавить свой комментарий в качестве ответа, так как вы в значительной степени попали туда по голове.
Адам Лир
Я решил эту проблему с помощью простого кода, вы можете проверить здесь: http://stackoverflow.com/questions/27339997/how-to-always-your-warm-up-asp-net-websites-webform-mvc ? noredirect = 1 # comment43136405_27339997
VnDevil

Ответы:

22

Пять возможностей, о которых я могу подумать (кроме некоторых передовых методов кэширования и тому подобного):

Джесси С. Слайсер
источник
Вы не можете найти один пример?
Джефф
1
ViewState также играет определенную роль в этих проблемах.
Эрин
1
1) Другими словами, ASP.NET использует больше ресурсов, чем asp classic?
HK1
1
Я думаю, что еще одна распространенная проблема, не упомянутая в вашем замечательном ответе (или любом другом ответе здесь), - это медленный доступ к базе данных. Я использовал несколько «бюджетных» веб-хостинговых компаний (сетевые решения, не говоря уже об именах), и у меня были довольно серьезные замедления из-за доступа к базе данных (SQL Server).
HK1
8

По-видимому, это может быть достойным ответом.

Может быть много факторов в игре. Сайт, который вы используете в данный момент, построен на .NET, и обычно он очень быстрый (за вычетом простоев / периодов обслуживания).

Разработчики тех сайтов, на которые вы заходите, могут передавать вам тонны данных, или медленные соединения, или перегруженные серверы и т. Д. И т. Д. И т. Д. И т. Д. Это также может быть восприятием в игре. Кроме того, может быть, безумный Javascript в игре, и вы используете IE? Или прошить?

WKL
источник
4

Если вы на самом деле не знаете, что делаете, веб-формы ASP.NET позволяют создавать веб-приложения, перетаскивая элементы управления на форму, вплоть до того, что скрывают природу http без состояния. Это работает, но такого рода разработка никогда не приведет к созданию эффективного кода, особенно если ваш уровень доступа к данным включает в себя сгенерированные запросы, выбирающие все из базы данных SQL Express без индексов.

Существует множество быстрых сайтов asp.net, разработанных людьми, которые понимают, как на самом деле работают веб-приложения. Это включает в себя этот сайт - он использует ASP.NET MVC, который обеспечивает гораздо больший контроль над обработкой отдельных запросов и не показывает расширение .aspx.

Том Кларксон
источник
3

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

GrandmasterB
источник
2

Когда веб-сайт загружается (событие application.start), требуется время, чтобы загрузить все в память. В зависимости от настроек IIS, через 20-30 минут бездействия он будет выгружен. Я не нашел приличного способа поддерживать работу приложения постоянно без какого-либо обслуживания GETкаждые 10+ минут.

Плохо спроектированный бэкэнд / слой данных может заставить все работать медленно (независимо от того, насколько быстро работает компьютер). Профилирование поможет вам определить, где проблемы.

Tangurena
источник
1

Вы наверняка воображаете это. :)

Множество факторов вступают в игру с любым программным обеспечением. Архитектура, избыточность потока кода, качество кода и т. Д. Слишком много, чтобы даже начать перечислять.

Хотите доказательства того, что ASP хорош для использования на уровне предприятия? Этот сайт (и все сайты SE) сделаны с использованием ASP.Net - в частности, MVC.

Когда в последний раз этот сайт работал медленно? Я здесь уже больше года и ни разу не заметил, как что-то пыхтит, несмотря на огромную базу пользователей.


источник
0

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

ViewState позволяет вам делать вид, что вы работаете с приложением winforms с сохранением состояния. Иногда это может привести к неприятностям.

Лорд тидус
источник
0

Все вышеперечисленное скорее всего верно. Самым большим фактором, влияющим на производительность сайта ASP.NET, над которым я работал, было то, что все, что с ним связано, было старым. Версия платформы .NET, серверы, инфраструктура баз данных и сам код сильно устарели.

Я подозреваю, что многие сайты ASP.NET, как правило, являются корпоративными сайтами. Они не получают много любви, так как они, как правило, просто работают . Люди не переписывают их, пока они не должны, что часто очень долго.

Я знаю сайт , который я работал с используемым ASP.NET получил огромное ускорение только путем перехода к новой версии рамок, которые были гораздо более эффективным JITing и здравомыслящее кэширование по умолчанию.

Другое дело, что многие сайты ASP.NET не знают, как правильно масштабировать. У них не настроена правильная балансировка нагрузки, потому что проектирование их сайта для правильной работы с веб-садами не является распространенным или хорошо документированным в сообществе. Если вы с самого начала не разрабатываете свой сайт для веб-садов, вы не сможете использовать встроенный механизм горизонтального масштабирования, который есть в IIS. Балансировка нагрузки программного обеспечения в Windows NLB не очень распространена и сложна в управлении. (Это возвращает нас к тому факту, что ASP.NET, как правило, является корпоративным программным обеспечением и управляется компанией, управляющей сайтом, а не ИТ-специалистами, которые знают, как правильно настроить этот материал.)

Аппаратная балансировка нагрузки с помощью F5s очень дорогая, но, похоже, является наиболее распространенным и простым механизмом масштабирования сайтов ASP.NET в корпоративных сетях. Я думаю, что среди разработчиков открытого исходного кода ожидается, что вы с самого начала создадите балансировку нагрузки с помощью свободно доступных инструментов с открытым исходным кодом, которые автоматически масштабируются в зависимости от использования. Это не распространено в мире ASP.NET из того, что я видел.

случай
источник