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

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

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

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

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

Ответов (12)

Решение
  1. Объединение скриптов в .NET 3.5 SP1
  2. Лучшие практики для быстрых веб-сайтов
  3. Сжатие HTTP (gzip)
  4. Сжать JS / CSS (отличается от сжатия http, минимизировать javascript)
    1. Компрессор YUI
    2. Компрессор .NET YUI

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

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

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

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

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

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

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

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

ОБНОВИТЬ

Теперь расширение YSlow совместимо со всеми современными браузерами, такими как Firefox, Chrome, Opera, Safari и другими, подробнее читайте здесь .

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

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

Вы пробовали эти советы?

http://weblogs.asp.net/haroonwaheed/archive/2008/06/30/ASP.NET-Performance-Tips.aspx

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

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

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

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

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

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

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

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

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

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

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