Общие советы по оптимизации ASP.NET и C# в целом

  • Использовать perfomance counters
    https://msdn.microsoft.com/en-us/library/fxk122b4(v=vs.71).aspx
    https://msdn.microsoft.com/en-us/library/3xxk09t8(v=vs.140).aspx
    https://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx
    Они позволят вам получить представление о некоторых параметрах сервера и среды приложения (память, процессор и т.д.).
  • Не использовать сессии
    web.config -> sessionState -> mode = Off.
  • Использовать WCAT
    Если вам нужно протестировать сайт в режиме стресс нагрузки – используйте WCAT.
  • Использовать MiniProfiler – http://miniprofiler.com/
    Позволяет видеть скорость загрузки всех ресурсов, а также отслеживать все SQL запросы и их дубликаты.
  • Использовать using, где есть IDisposable
    В этом случае память будет корректно очищаться (сборщик мусора сразу пометит занятую память как готовую к очистке при необходимости).
  • Правильная установка параметров в Web.config
    На запущенном в эксплуатацию сайте задавать в Web.config параметры debug=false и trace enabled = false.
  • При работе со строками использовать StringBuilderи String.Compare
    Использовать при работе со строками не конкатенацию строк, а StringBuilder. Для сравнения строк используйте String.Compare.
  • Использовать асинхронные операции
    Используйте преимущества .NET 4.5 async constructs – асинхронные операции.
  • Устанавливать большое значение атрибуту CacheControlMaxAge
    Всегда ставить атрибут CacheControlMaxAge в web.config равным большому числу (месяц, год).
  • Кеш данных – это последнее средство оптимизации, а не первое
    Используйте кеш только в тех случаях, когда другие возможности оптимизации уже исчерпаны.
  • Избегать исключений (Exceptions)
    Они очень медленно выполняются. Для этого делайте необходимые проверки (на неравенство null и т.д.).
  • Использовать paging не более 100
    Если вы используете очень большой размер страницы – это сказывается на всех уровнях: дольше выполняется sql запрос, дольше идет обработка данных, дольше выводится в браузер, дольше идет обработка JS и CSS. Добивайтесь за счет фильтров, чтобы пользователю выводилась только нужная информация.
  • Для production версии сайта – release версия web.config
    Всегда выкладывайте на production версию сайта release версию web.config с правильно настроенными параметрами.
  • Https использовать только для важных страниц
    То есть на страницах надо ставить абсолютные ссылки ссылки с http, иначе они будут вызываться с https.
  • Создать “правильный” robots.txt
    Pаскройте в robots.txt все, что можно, для поисковиков. Это уменьшит загрузку от поисковых роботов.
  • Хранить большие объекты с использованием pooling objects
    Если объекты больше 85 кб – имеет смысл хранить их как набор объектов поменьше (pooling objects).
  • Анализировать проблемы с CPU
  • Тестировать наличие соединение пользователя с сервером
    Проверяйте Response.IsClientConnected перед долгой операцией.
  • Инициализировать регулярные выражения вне цикла
    При использовании Regex – определяйте его за пределами цикла.

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

Руслан Раянов

Recent Posts

Форма теста внешних действий #falconstart

Вызов внешних действий - это возможность действия, выходящего за рамки возможности работы с БД через…

4 недели ago

Концепция внешних действий – telegram, email, уведомления на сайте

Вызов внешних действий - это возможность действия, выходящего за рамки возможности работы с БД через…

1 месяц ago

Работа с JSON в SQL #falconstart

После выполнения действий в SQL на клиенте иногда возникает необходимость что-то обновить или сделать. Для…

1 месяц ago

Форма с отправкой запроса API. Тестирование исходящих запросов #falconstart

Вы можете обратиться к внешним API через использование Внешних действий (код apirequest, использование описано в…

1 месяц ago

Таблица Trace для отслеживания событий на сайте

В системной таблице as_trace хранятся данные по работе приложения. Поле code определяет тип события: DBLREQ…

1 месяц ago

Работа с ошибками в системе. Генерация отчета по ошибкам #falconstart

Рассмотрим механизм анализа ошибок, как это всё работает, и как его использовать. Когда происходит ошибка…

1 месяц ago