К счастью, я посетил множество веб-сайтов .aspx, которые требуют значительного времени загрузки для каждой страницы.
Мой опыт уникален?
Если нет, то почему веб-сайт ASP.Net может загружаться медленно?
Изменить: это сейчас около 7 лет спустя (29.12.2017). Хорошей новостью является то, что я больше не вижу этой проблемы, возможно, потому что Google начал наказывать сайты, которые загружаются слишком медленно. Теперь я использую ASP.NET MVC с хорошими результатами, в настоящее время работающем на частных виртуальных серверах Vultr (Azure был слишком медленным, когда мы его пробовали.) Некоторые из худших нарушителей, которые я вижу сейчас, - это системы CMS, такие как Wordpress и Drupal, вероятно, работающие на аппаратное обеспечение, которое слишком медленное или недостаточно определенное для объема трафика, который получает сайт. -HK1
Ответы:
Пять возможностей, о которых я могу подумать (кроме некоторых передовых методов кэширования и тому подобного):
Неправильное определение размера веб-сервера для ASP.NET (т. Е. Считалось, что размер сервера для классического ASP вполне подойдет)
Забыть удалить
<compilation debug="true"/>
из web.config и получить неоптимальный код .JIT для первого визита
Код, встроенный в страницу (в отличие от скомпилированного кода позади), который требует компиляции до и в дополнение к JIT.
ViewState (для ASP.NET WebForms) становится слишком большим .
источник
По-видимому, это может быть достойным ответом.
Может быть много факторов в игре. Сайт, который вы используете в данный момент, построен на .NET, и обычно он очень быстрый (за вычетом простоев / периодов обслуживания).
Разработчики тех сайтов, на которые вы заходите, могут передавать вам тонны данных, или медленные соединения, или перегруженные серверы и т. Д. И т. Д. И т. Д. И т. Д. Это также может быть восприятием в игре. Кроме того, может быть, безумный Javascript в игре, и вы используете IE? Или прошить?
источник
Если вы на самом деле не знаете, что делаете, веб-формы ASP.NET позволяют создавать веб-приложения, перетаскивая элементы управления на форму, вплоть до того, что скрывают природу http без состояния. Это работает, но такого рода разработка никогда не приведет к созданию эффективного кода, особенно если ваш уровень доступа к данным включает в себя сгенерированные запросы, выбирающие все из базы данных SQL Express без индексов.
Существует множество быстрых сайтов asp.net, разработанных людьми, которые понимают, как на самом деле работают веб-приложения. Это включает в себя этот сайт - он использует ASP.NET MVC, который обеспечивает гораздо больший контроль над обработкой отдельных запросов и не показывает расширение .aspx.
источник
Просто предположение здесь, поскольку я заметил то же самое. Я подозреваю, что .asp-сайты, как правило (обратите внимание на слово, как правило ), самостоятельно размещаются на серверах компании, а не в центрах обработки данных или в них. Поэтому они часто работают на оборудовании и соединениях, которые не предназначены для высокоскоростного веб-трафика. Я подозреваю, что сайты, связанные с холодным синтезом, также страдают от этого.
источник
Когда веб-сайт загружается (событие application.start), требуется время, чтобы загрузить все в память. В зависимости от настроек IIS, через 20-30 минут бездействия он будет выгружен. Я не нашел приличного способа поддерживать работу приложения постоянно без какого-либо обслуживания
GET
каждые 10+ минут.Плохо спроектированный бэкэнд / слой данных может заставить все работать медленно (независимо от того, насколько быстро работает компьютер). Профилирование поможет вам определить, где проблемы.
источник
Вы наверняка воображаете это. :)
Множество факторов вступают в игру с любым программным обеспечением. Архитектура, избыточность потока кода, качество кода и т. Д. Слишком много, чтобы даже начать перечислять.
Хотите доказательства того, что ASP хорош для использования на уровне предприятия? Этот сайт (и все сайты SE) сделаны с использованием ASP.Net - в частности, MVC.
Когда в последний раз этот сайт работал медленно? Я здесь уже больше года и ни разу не заметил, как что-то пыхтит, несмотря на огромную базу пользователей.
источник
Представление может действительно замедлить обратную передачу. Если у вас есть несколько больших выпадающих списков на странице, вы не должны использовать для них состояние просмотра.
ViewState позволяет вам делать вид, что вы работаете с приложением winforms с сохранением состояния. Иногда это может привести к неприятностям.
источник
Все вышеперечисленное скорее всего верно. Самым большим фактором, влияющим на производительность сайта ASP.NET, над которым я работал, было то, что все, что с ним связано, было старым. Версия платформы .NET, серверы, инфраструктура баз данных и сам код сильно устарели.
Я подозреваю, что многие сайты ASP.NET, как правило, являются корпоративными сайтами. Они не получают много любви, так как они, как правило, просто работают . Люди не переписывают их, пока они не должны, что часто очень долго.
Я знаю сайт , который я работал с используемым ASP.NET получил огромное ускорение только путем перехода к новой версии рамок, которые были гораздо более эффективным JITing и здравомыслящее кэширование по умолчанию.
Другое дело, что многие сайты ASP.NET не знают, как правильно масштабировать. У них не настроена правильная балансировка нагрузки, потому что проектирование их сайта для правильной работы с веб-садами не является распространенным или хорошо документированным в сообществе. Если вы с самого начала не разрабатываете свой сайт для веб-садов, вы не сможете использовать встроенный механизм горизонтального масштабирования, который есть в IIS. Балансировка нагрузки программного обеспечения в Windows NLB не очень распространена и сложна в управлении. (Это возвращает нас к тому факту, что ASP.NET, как правило, является корпоративным программным обеспечением и управляется компанией, управляющей сайтом, а не ИТ-специалистами, которые знают, как правильно настроить этот материал.)
Аппаратная балансировка нагрузки с помощью F5s очень дорогая, но, похоже, является наиболее распространенным и простым механизмом масштабирования сайтов ASP.NET в корпоративных сетях. Я думаю, что среди разработчиков открытого исходного кода ожидается, что вы с самого начала создадите балансировку нагрузки с помощью свободно доступных инструментов с открытым исходным кодом, которые автоматически масштабируются в зависимости от использования. Это не распространено в мире ASP.NET из того, что я видел.
источник