Изучение кэширования в 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.    Уменьшает потребление полосы пропускания