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

optimize_basic

  • Использовать 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.