Microsoft уже обнародовала свой план по полной переработке ASP.NET. Помимо того, что это полностью переработанная версия веб-фреймворка, ASP.NET Core 1.0 будет одновременно и кросс-платформенной, и с открытым исходным кодом. Обновленная версия ASP.NET по-прежнему будет совместима с веб-приложениями, разработанными в ее более старых версиях. Кроме того, ASP.NET Core 1.0 будет работать как на .NET 4.6, так и на .NET Core 1.0. Следовательно, у разработчиков по-прежнему будет возможность запускать существующие приложения ASP.NET без внесения серьезных изменений. Но они должны изучить способы повышения производительности приложений ASP.NET, чтобы поддерживать интерес посетителей и обеспечивать оптимизированный пользовательский интерфейс.

15 советов по повышению производительности вашего приложения ASP.NET

1) Обновите ASP.NET до последней версии

Каждая новая версия ASP.NET поставляется с несколькими новыми функциями для повышения производительности и функциональности веб-приложения. Например, ASP.NET 4.5 поставляется с улучшенной многоядерной компиляцией JIT, новым сборщиком мусора и новыми функциями, такими как приостановка работы приложения. Аналогичным образом, ASP.NET Core 1.0 будет включать несколько новых функций для повышения производительности и совместимости веб-приложений. Вы всегда можете воспользоваться преимуществами новых функций и улучшений для повышения производительности приложения ASP.NET и обработки больших объемов данных без внесения каких-либо изменений в код.

2) Сжать файлы

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

3) Храните файлы JavaScript и CSS отдельно от просмотра

Среди разработчиков ASP.NET распространена практика хранения интерфейсных ресурсов, таких как файлы JavaScript и CSS, в представлениях. Когда интерфейсные файлы хранятся в представлении, представление создается повторно на основе каждого запроса пользователя. Кроме того, параметры хранения не позволяют разработчикам воспользоваться преимуществами параметров кэширования данных и вывода. Вы можете легко повысить производительность приложений ASP.NET, сохранив эти файлы вне представлений и подключив файлы к представлениям в виде ссылок.

4) Доступ к опции кэширования данных

Часто повторяющиеся запросы к базе данных отрицательно сказываются на производительности и масштабируемости приложения ASP.NET. Вы можете воспользоваться опцией кэширования вывода, чтобы избежать повторного выполнения запросов к базе данных. Кроме того, механизм сделает данные доступными для пользователя, когда источник данных временно недоступен. Вы можете воспользоваться классами, предоставляемыми .NET Framework и определенными в пространстве имен System.Runtime.Caching, чтобы активировать кэширование данных без дополнительных усилий.

5) Доступ к опции кэширования выходных данных

Как и повторное выполнение запросов к базе данных, воспроизведение регулярно используемых страниц или представлений также негативно влияет на производительность приложения ASP.NET. Вы должны использовать кэширование вывода для кэширования регулярно используемых страниц или представлений, которые не отображают динамическое содержимое. Кроме того, ASP.NET позволяет программистам реализовывать кеширование представлений MVC, просто добавляя атрибут [OutputCache] либо к каждому действию контроллера, либо ко всему классу контроллера. Разработчики могут проверить здесь основные элементы управления для asp.net.

6) Доступ к кэшу режима ядра

Как и кэш данных и выходных данных, вы также можете использовать параметр кэширования режима ядра для повышения производительности приложения ASP.NET. Каждый запрос к веб-серверу проходит ряд этапов. Первоначально запрос принимается http.sys, который разработан как прослушиватель http и находится непосредственно в ядре операционной системы. Когда вы включаете кеш режима ядра, http.sys может прослушивать запросы непосредственно с уровня TCP. Следовательно, запрос может быть обработан быстро, игнорируя жизненный цикл страницы, выполнение запроса к базе данных и пользовательский код.

7) Проверьте и удалите неиспользуемые HTTP-модули

Каждый запрос, сделанный пользователем, должен пройти через конвейер ASP.NET. Конвейер ASP.NET содержит несколько модулей http, а также обработчик http. Запрос окончательно обрабатывается обработчиком http после прохождения всех модулей http. Таким образом, время обработки запроса зависит от количества модулей http, включенных в конвейер ASP.NET. Вы всегда можете определить и удалить неиспользуемые модули из конвейера, чтобы гарантировать, что запрос проходит только через релевантные и полезные http-модули.

8) Минимизируйте количество подключений к базе данных

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

9) Не используйте ViewState для увеличения времени загрузки страницы

Вы можете легко увеличить время загрузки страницы, включив ViewState. Но вы не должны забывать, что каждый байт, добавленный к веб-странице путем включения ее ViewState, добавляет дополнительные байты к сетевому трафику. Таким образом, вы должны изучить способы оптимизации загрузки страницы без включения ViewState. Вы даже можете рассмотреть возможность удаления атрибута runat="server" с веб-страницы, чтобы избежать добавления лишних байтов к сетевому трафику. Тем не менее, вы должны проверить и оптимизировать скорость загрузки каждой веб-страницы, чтобы повысить удобство работы с приложением и рейтинг в поисковых системах.

10) Минимизация и объединение интерфейсных ресурсов

Вы можете легко повысить производительность приложения ASP.NET, минимизировав и объединив файлы JavaScript и CSS. Количество HTTP-запросов значительно уменьшится, если вы объедините файлы JavaScript и CSS в один большой файл. Аналогично, минимизированные файлы JavaScript и CSS уменьшат размер данных, передаваемых между веб-сервером и клиентом. Вы можете легко объединять и минимизировать пользовательские файлы JavaScript и CSS, используя ряд инструментов с открытым исходным кодом.

11) Управление запросами изображений

Вы можете значительно повысить производительность приложения ASP.NET, контролируя запросы изображений. Поскольку большинство веб-сайтов в настоящее время используют изображения и графику с высоким разрешением, контроль запросов изображений становится ключевым. Вы можете управлять запросами изображения с помощью двух различных опций — спрайта изображения и URI данных Base64. Спрайт изображения позволяет объединить несколько отдельных изображений в один файл изображения. Вы можете использовать CSS для изменения положения этих изображений на веб-странице на основе большого файла изображения. Точно так же вы можете использовать URI данных base64 для быстрого получения и визуализации изображений без отдельных запросов к серверу.

12) Используйте серверы сети доставки контента

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

13) Разверните сайт в режиме выпуска сборки

При развертывании приложения ASP.NET в рабочей среде программисты часто выбирают сборку отладки вместо сборки выпуска. Когда веб-сайт работает в режиме отладки в производстве, будут созданы дополнительные PDB, и вероятность тайм-аута запроса увеличится. Перед развертыванием приложения необходимо переключиться из режима отладки сборки в режим выпуска сборки, чтобы увеличить скорость работы приложения без дополнительных усилий.

14) Удалить все пустые методы из global.asax

У вас есть возможность включить несколько методов уровня приложения в global.asax. Некоторые из этих методов прикладного уровня выполняются один раз при первом запросе, тогда как другие часто выполняются при каждом запросе. Приложение ASP.NET дополнительно ищет методы уровня приложения, включенные в global.asax, при каждом запросе. Он даже выполняет пустые методы, включенные в global.asax, несмотря на отсутствие кода внутри. Следовательно, вы должны просмотреть методы, присутствующие в файле global.asax, и удалить все пустые методы, чтобы повысить скорость работы приложения. Также рекомендуется удалить большинство методов из global.asax и попытаться включить их в цикл страницы.

15) Проверка ввода пользователя с помощью сценариев на стороне клиента

Вы всегда можете снизить нагрузку на сервер и повысить скорость веб-приложения, проверяя ввод пользователя с помощью JavaScript. Код JavaScript поможет вам всесторонне проверить все входные данные, не заставляя приложение взаимодействовать с веб-сервером. У вас по-прежнему есть возможность проверить ввод пользователя с помощью элементов управления на стороне клиента. Но есть вероятность, что пользователь может отключить JavaScript в веб-браузере при доступе к приложению ASP.NET. Следовательно, вам необходимо проверить ввод, отправленный пользователем на стороне сервера, чтобы обеспечить безопасность приложения.

Есть вероятность, что ASP.NET Core 1.0 не поддерживает все функции, предоставляемые его предшественниками. Следовательно, разработчикам приходится вносить изменения в исходный код существующих приложений ASP.NET, чтобы повысить их производительность и воспользоваться преимуществами новых функций, включенных в ASP.NET Core 1.0. Однократное изменение повысит совместимость и производительность приложения в долгосрочной перспективе.