• Microsoft .NET
  • ASP.NET
  • Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0

Повышение производительности веб-сайта ASP.NET

Данная статья дает хорошо работающие советы по повышению производительности веб-приложения.

Если веб-приложение, вызывающее много служб и загружающее много данных на каждой странице с множеством фоновых вычислений из базы данных, тормозит - то надо сделать:

1. Сжатие HTTP

Сжатие HTTP сжимает содержимое страницы на сервере. Оно сжимает запросы и ответы HTTP, что значительно повышает производительность. Проект размещен в Windows Server 2003, и сжатие HTTP было реализовано после прочтения этой статьи.

2. Отключить возможный ViewState

Состояние просмотра позволяет сохранить состояние страницы у клиента и не требует куки или памяти сервера. Состояние просмотра сохраняет данные в скрытом input, хранящемся внутри страницы. Безусловно, это мощное средство, но недостаток в том, что оно увеличивает размер страницы и выделение памяти на сервере.

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

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

3. Изменения в файле Web.Config

a.    Использовать кэширование страницы:

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

<caching>
<outputCacheSettings>
    <outputCacheProfiles>
        <add name="cached" duration="600"
            varyByParam="none" enabled="true"/>
    </outputCacheProfiles>
</outputCacheSettings>
</caching>

b.    Удалить ненужные httpModule из web.config:

<add name="ScriptModule" 
     type="System.Web.Handlers.ScriptModule, System.Web.Extensions,
           Version=3.5.0.0, Culture=neutral,
           PublicKeyToken=31BF3856AD364E35"/>
<remove name="WindowsAuthentication" />
<remove name="PassportAuthentication" />
<remove name="AnonymousIdentification" />
<remove name="UrlAuthorization" />
<remove name="FileAuthorization" />

c.    Отключить трассировку:

<trace enabled="false" pageOutput="false" />

d.    При использовании членства отключить автоматическое сохранение для профилей:

<profile enabled="true" automaticSaveEnabled="false" />

e.    Установить debug=false:

<compilation debug="false">

4. Реализовать зависимость кэширования

Доступны три типа зависимостей кэширования:
1.    Зависимость кэширования для кэшированных элементов
2.    Зависимость кэширования для файла
3.    Зависимость кэширования для SQL

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

5. Оптимизировать таблицы стилей

Важно очистить таблицы стилей и убрать ненужный код из таблиц стилей, потому что это увеличивает время загрузки. Удалите все ненужные классы из таблиц стилей и старайтесь использовать единственный файл CSS. В проекте использовался инструмент для уменьшения размера таблицы стилей. Использовался этот сервис, чтобы уменьшить размер файла CSS на 20%.

6. Оптимизировать JavaScript

JavaScript был оптимизирован с помощью этого сервиса.

7. Расположение файлов JS и CSS

Объявление файла CSS следует разместить вверху страницы шаблона. Рекомендуется вызвать файлы CSS вверху страницы, потому что отрисовка страницы станет  более эффективной.

Ссылки на файлы JavaScript были помещены внизу основной страницы-шаблона. Размещение скриптов вверху страницы увеличивает время загрузки.

8. server.transfer() вместо response.redirect()

По возможности, используйте server.transfer() вместо response.redirect(). Он загружает страницы быстрее, потому что отправляет только форму, а не целую страницу.

9. Клиентский скрипт для валидации

Для валидации страницы используйте клиентские валидации вместо обратных передач. Таким образом уменьшается число передач туда-обратно на страницах.