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

Ускорение веб-сайта или приложения ASP.Net

У меня есть веб-сайт ASP.Net 2.0 с поддержкой Ajax.Net. Хостинг как для сайта, так и для базы данных вышел из моего контроля, как и схема базы данных. При тестировании на оборудовании я действительно контролирую сайт, но на клиентском оборудовании заметны задержки при перезагрузке или смене страниц.

Что я хотел бы сделать, так это сделать мое приложение максимально компактным и быстрым, когда я его достаю. Одна из идей - установить даты истечения срока действия для всех статических ресурсов сайта, чтобы они не вызывались при загрузке страницы. Посредством ресурсов я имею в виду изображения, связанные таблицы стилей и исходные файлы JavaScript. Есть ли простой способ сделать это?

Какие еще существуют способы оптимизации веб-сайта .Net?

UPDATE: Я запустил YSlow на сайте, и области, в которых я попадаю сильнее всего, - это количество загружаемых JavaScript и таблиц стилей (23 файла JS и 5 таблиц стилей). Все, кроме одного (основная таблица стилей), были вставлены Ajax.net и Asp. Почему так много?

4b9b3361

Ответ 1

Мой лучший совет - проверить содержимое YUI. У них есть отличные статьи, которые говорят о таких вещах, как CSS спрайты и имеют некоторые nice javascript, чтобы уменьшить количество запросов, которые делает браузер.

Ответ 2

Если вы используете Firefox для проверки своего сайта, вы можете попробовать отличное расширение Firefox из Yahoo! YSlow.

Он анализирует ваши веб-страницы и дает оценки от A-F (A является лучшим, а F - наихудшим) для каждой из лучших практик для высокопроизводительных веб-сайтов. Это поможет вам отслеживать элементы вашего сайта, которые вы можете оптимизировать для получения ускорений.

Ответ 3

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

Ответ 4

Я написал сообщение о повышении производительности страницы ASP.NET за пару месяцев назад. Вот несколько быстрых и простых способов -

  • Отключить состояние просмотра
  • Отключить проверку событий
  • Внедрить сжатие gzip/deflate HTTP для уменьшения размера ответа (количество байт, которое сервер должен отправить обратно клиенту)
  • Попробуйте оптимизировать/минимизировать вызовы базы данных для каждого запроса.

Ответ 5

Я думаю, вам действительно нужно иметь возможность получать некоторые фактические данные/телеметрию PerfMon из приложения во время работы в производстве, чтобы иметь возможность сделать просветленное решение о том, что нужно оптимизировать.

Как подсказка, я бы удостоверился, что ваше приложение развернуто как сборка Release и установите debug = "false" в разделе 'compilation' вашего web.config.

Ответ 6

Вы, похоже, начинаете с предположения, что ваша проблема - размер загрузки - это может и не быть так. Вы должны провести некоторое экспериментирование с вашим сайтом ASP.NET, чтобы определить, есть ли в вашем коде области, которые вызывают неоправданные задержки. Если окажется, что размер загрузки не является вашей проблемой, вам нужно будет найти способы кэширования ваших результатов (посмотрите на кэширование вывода, которое является функцией ASP.NET) или оптимизируйте свой код.

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

Ответ 8

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

Совместимость с коммутаторами для AJAX уже упоминалась, но я не заметил ссылки на ScriptReferenceProfiler MS, выпущенную на Codeplex, чтобы выяснить, что следует комбинировать. Майк Ормонд имеет хорошую отправную точку в этом.

Еще один совет, если вы делаете много INSERT в своей базе данных, - это двойная проверка кэширования на сервере. Имея в виду, у меня был импортер данных, делающий 1,2 миллиона вставок во время прогона. Взял 4 часа и изменил без кеширования. Взял с собой 16 минут.

Ответ 9

Общая информация при использовании ASP.NET и Ajax (любая библиотека Ajax) заключается в том, чтобы не сложить ваши страницы Page_Load и Page_Init (и их методы), поскольку они будут выполняться в каждом запросе Ajax.

Когда это будет сказано, я серьезно буду разорвать ASP.NET AJAX и использовать что-нибудь еще...

Anthem.NET, AjaxPRO.NET, jQuery или что-то еще, чем ASP.NET AJAX...

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

Ответ 10

Вы можете включить сжатие на основе вашего клиента, поддерживающего его. См. Эту статью: текст ссылки

Ответ 11

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

Ответ 12

Вы также можете посмотреть выходное кэширование ASP.NET, которое можно применять довольно подробно для разных частей вашей страницы:

http://msdn.microsoft.com/en-us/library/xsbfdd8c(VS.71).aspx