• Microsoft .NET
  • ASP.NET
  • Управление состоянием с помощью форм HTML в ASP.NET – легкая альтернатива

Изучение кэширования в ASP.NET

ОГЛАВЛЕНИЕ

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

Введение

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

Что такое кэширование?

К веб-приложениям обращается множество пользователей. На веб-сайт ложится тяжелая нагрузка, которая может расти экспоненциально и  тормозить сервер и доступ к сайту. Медленный доступ – самая распространенная проблема веб-сайтов при одновременном обращении к ним большого числа клиентов. Для решения этой проблемы можно использовать высокий уровень аппаратной конфигурации, балансировщик нагрузки, широкую полосу пропускания. Однако нагрузка – не единственная причина, тормозящая веб-сайт, поэтому надо создать какой-то механизм, обеспечивающий быстрый доступ к данным и прирост производительности. Кэширование дает такое решение.

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

Можно выбрать большое количество времени для хранения кэшированных данных, чтобы повысить производительность, но это не всегда решает задачу. Если рассматривается нагрузка на веб-сервер, надо рассмотреть место, где хранятся кэшированные данные. Следующий раздел описывает разные места хранения кэшированных данных.

Разные места кэширования

Кэширование в веб-приложении можно делать на стороне клиента (браузер клиента), между клиентом и сервером (кэширование в прокси и в обратном прокси), или на стороне сервера (кэширование данных/кэширование вывода страницы). Места кэширования классифицируются следующим образом:
1.    Кэширование на клиенте
2.    Кэширование в прокси
3.    Кэширование в обратном прокси
4.    Кэширование на веб-сервере

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

 

Рис. 1 : Кэширование на клиенте

Плюсы
1.    Легкий доступ к данным, кэшированным на локальном клиенте
2.    Уменьшает сетевой трафик

Минусы
1. Кэшированные данные полностью зависят от браузера, поэтому они не разделяемы
2. Кэширование в прокси: Основной недостаток кэширования на клиенте заключается в том, что данные, хранящиеся в браузере клиента, являются специфичными для клиента. Кэширование в прокси использует выделенный сервер, хранящий кэшированную информацию между клиентом и веб-сервером в разделяемом месте, так что все клиенты могут использовать одни и те же разделяемые данные. Прокси-сервер (например, прокси-сервер Microsoft) исполняет все запросы к веб-странице без отправки запроса к фактическому веб-серверу через интернет, обеспечивая более быстрый доступ.

 

Рис. 2: Кэширование в прокси

Кэширующие прокси часто помещаются вблизи сетевых шлюзов для уменьшения трафика. Иногда несколько кэширующих прокси-серверов используются для большего числа клиентов. Это называется кэширующим массивом.

 

Рис. 3: Кэширующий массив

Плюсы
1. Легкий доступ к данным, кэшированным на прокси-сервере
2. Уменьшает сетевой трафик

Минусы
1. Требует развертывания и издержки инфраструктуры для обслуживания кэширующего прокси-сервера
2. Кэширование в обратном прокси: Можно поместить прокси-сервер перед веб-сервером, чтобы уменьшить количество получаемых им запросов. Это позволяет прокси-серверу отвечать на часто получаемые запросы и передавать веб-серверу только остальные запросы. Это называется обратным прокси.

 

Рис. 4: Кэширование в обратном прокси

Плюсы
1. Легкий доступ к данным, кэшированным на обратном прокси-сервере
2. Уменьшает количество запросов

Минусы
1. Так как сервер конфигурируется перед веб-сервером, может увеличиться сетевой трафик
2. Кэширование на веб-сервере: При кэшировании на веб-сервере кэшированные данные хранятся внутри веб-сервера. Кэширование данных и кэширование страницы использует механизм кэширования веб-сервера.

 

Рис. 5: Кэширование на веб-сервере

Плюсы
1. Повышает производительность сайтов путем уменьшения извлечения данных в обе стороны из базы данных или какого-то другого сервера

Минусы
1. Увеличивает нагрузку на сеть

Преимущества кэширования
1.    Уменьшает нагрузку на сервер
2.    Уменьшает потребление полосы пропускания

Читайте также:
  • Два перехватчика: HttpModule и HttpHandlers
    •    Скачать исходники и демо - 12.02 Кб Задача То и дело необходимо вставить какую-то логику перед запросом страницы. Часто используемой логикой предварительной обработки являются счетчики статистики, замена URL, аутентификация / авторизация и многие другие. Это можно делать в отделенном коде, ...
  • Взаимодействие Flex с веб-службой ASP.NET
    •    Скачать исходники - 3.45 Кб•    Скачать тест - 1.08 Кб Помните, что веб-служба – всего лишь средство. Есть много других средств вроде HTTPService, дистанционная связь Flex и т. д. Справка В статье Flex HTTPService с ASP.NET на CodeProject показано использование тега flex <mx:HTTPServi...
  • Повышение производительности веб-сайта ASP.NET
    Если веб-приложение, вызывающее много служб и загружающее много данных на каждой странице с множеством фоновых вычислений из базы данных, тормозит - то надо сделать: 1. Сжатие HTTP Сжатие HTTP сжимает содержимое страницы на сервере. Оно сжимает запросы и ответы HTTP, что значительно повышает про...
  • Веб-формы 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, растущий со скоростью тысяча пользователей в день, и достигнут предел возможностей вашего собственного хостинга. Теперь, имея достаточно денег в кармане, вы планируете переехать на сторонний хостинг, возможно, на совместное размещение или на...