Повышение производительности веб-сайта 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. Клиентский скрипт для валидации

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

Читайте также:
  • Два перехватчика: HttpModule и HttpHandlers
    •    Скачать исходники и демо - 12.02 Кб Задача То и дело необходимо вставить какую-то логику перед запросом страницы. Часто используемой логикой предварительной обработки являются счетчики статистики, замена URL, аутентификация / авторизация и многие другие. Это можно делать в отделенном коде, ...
  • Взаимодействие Flex с веб-службой ASP.NET
    •    Скачать исходники - 3.45 Кб•    Скачать тест - 1.08 Кб Помните, что веб-служба – всего лишь средство. Есть много других средств вроде HTTPService, дистанционная связь Flex и т. д. Справка В статье Flex HTTPService с ASP.NET на CodeProject показано использование тега flex <mx:HTTPServi...
  • Изучение кэширования в ASP.NET
    Введение Большее число клиентов означает большее число запросов к веб-серверу и тяжелую нагрузку на сеть, вызывающую падение производительности. Для решения этой проблемы было применено кэширование в веб-приложении. Большинство описанных в статье вещей известно многим читателям, но статья была на...
  • Веб-формы ASP.NET и ASP.NET MVC в ладу друг с другом
    •    Скачать исходники - 442 KB Снимки экрана Простая демонстрация в действии. Первый снимок экрана обслуживается из классической веб-формы с URL: http://localhost:41650/Src/ClassicWebforms/Home.aspx. Второй обслуживается из приложения MVC действием "индекс контроллера «главная страница". URL: ...
  • Доступная производственная архитектура программного обеспечения как услуги на базе ASP.NET и SQL Server
    Введение Имеется популярный продукт ASP.NET+SQL Server, растущий со скоростью тысяча пользователей в день, и достигнут предел возможностей вашего собственного хостинга. Теперь, имея достаточно денег в кармане, вы планируете переехать на сторонний хостинг, возможно, на совместное размещение или на...