Зачем нужно кэширование?

Начнем с мотивации кэширования. Хостинговые компании платят за полосу пропускания используемых каналов, и, естественно, кэширование может помочь им сократить свои расходы. От кэширования могут получить выгоду все участники обмена Web-сообщениями. Конечные пользователи получают значительный выигрыш от кэширования, так как уменьшаются задержки при получении ответов. Значительная доля разрывов соединений, происходящих во время сеансов взаимодействия с Web-сайтами, обычно связано недостаточно быстрым получением ответов пользователями. Пропускная способность сети снижается из-за повторпых передач утерянных дапных. Если предположить, что перегрузка возникает в различных точках Internet, то может оказаться полезным сокращение трафика или перенос его от магистральных сетей к периферии. Это дает двойиую выгоду на уровне сети: передаются только полезные данные, а высвободившаяся пропускная способность может быть использована для передачи дополнительных данных. Расстояние кэша от пользователя также является существенным фактором при определении выигрыша пользователя от использования кэша. Близкий к пользователю кэш может существенно уменьшить время ожидания ответа по сравнению с кэшем, расположенным ближе к серверу.

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

•          пропускпая способность соединения пользователя с провайдером и провайдера с Internet;

•          если ответ на запрос к DNS-серверу отсутствует в кэше, то затрачивается время на обращение к DNS-серверу для преобразования доменного имени в IР-адрес;

•          возникающие на пути между пользователем и исходным сервером заторы в сети;

•   перегрузка исходного сервера;

•   время создания ответа;

•   время отображения ответа браузером.

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

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

Задержка, связанная с DNS. Увеличение времеии жизпи (TTL) таблиц соответствий между домеииыми именами и IP-адресами в DNS также может сократить общее время ожидания ответа, поскольку соответствие между доменным именем и IP-адресом меняется не слишком часто. Как это будет обсуждаться в разделе 11.13, некоторые схемы кэширования могут не только располагать Web-содержание ближе к пользователю, но и умепьшагь время поиска соответствия между доменным име- пем и IP-адресом. Расположение Web-содержания ближе к пользователю означает уменьшение сетевого расстояния (т.е. числа промежуточных передач) ответа. Кэширующий прокси-сервер может хранить список часто используемых домепов и тем самым сокращать задержки, связанные с DNS-операциями.

Сетевая нагрузка и производительность сети. Сокращение числа промежуточных передач пакетов может увеличить нропускпую способность между клиентом и сервером, на котором размещено Web-содержание. Поскольку TCP является основным протоколом транспортного уровня для HTTP, то сокращение времени прохождения пакетов от клиента к серверу и назад (RTT) повышает производительность. Производительность TCP обратно пропорциональна RTT. Уменьшение числа промежуточных передач приводит также к уменьшению вероятности задержек в промежуточных точках из-за перегрузок. Как было отмечено в главе 5 (раздел 5.2.6), большое число пакетов в сети может вызвать перегрузку сети, приводящую к утере пакетов. Утерянные пакеты должны быть переданы повторно. Если в результате кэширования уменьшается пагрузка на сеть, то оставшиеся данные могут быть переданы быстрее. Отправитель TCP-пакетов для более нолного использования сети может увеличить размер скользящего окпа.

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

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

Воспроизведение ответа браузером. Браузер должен синтаксически проанализировать и отобразить ответ. Время на Анализ ресурса браузером не может быть сокращено кэшированием, если только не хранить версию воспроизводимой страницы, непосредственно в оперативной памяти браузера. Чтепие и воспроизведение требует времени, даже если ответ записан в кэш браузера. Однако поскольку весь документ доступен локально, то для отображения ответа могут быть использованы различные технологии. Например, браузер может изменить процесс отображения содержания документа, если все встроенные изображения уже имеются в наличии. Большинство Web-страниц отображаются по мере загрузки ресурсов браузером, тем самым отображение загружаемых ресурсов может быть медленнее, чем отображение из кэша.

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

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

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100