Согласованность кэша

Исходный сервер определяет время актуальности кэшированного ответа. Кэш же должен перед тем, как отправить запрашивающему клиенту кэшированный ресурс, убедиться, что он еще актуален. — хорошо изученная проблема для всех форм кэширования на Компьютерах. Первопачалыю согласованность изучалась в связи с использованием многоуровневой памяти компьютера — кэшированная копия файла могла измениться на диске. Были предприняты попытки минимизировать объем затрат, требуемых для проверки актуальности, Однако цена поддержания согласованности менялась в зависимости от контекста. Для Web-кэшей в последнее время были предложены различные алгоритмы поддержания согласованности. может зависеть от ресурсов и политики сохранения элементов в кэше. Кэши могут просто возвращать более старое кэ- шированиое значение с добавлением признака устаревания ресурса. Одна из причин такого поведения — отключение исходного сервера или перегрузка кэша. Заголовок Warning протокола НТТР/1.1 (обсужденный в главе 7, в разделе 7.12.2) может использоваться для указания того, что возвращаемое кэшированное значение возможно уже устарело. Агент пользователя может сделать эту информацию доступной пользователю.

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

Протокол НТТР/1.1 обеспечивает несколько нутей для поддержания согласованности кэша. Если исходный сервер задает определенное время истечения срока годности ресурса, то прокси-сервер, обеспечивающий семантическую прозрачность кэширования, обязап строго придерживаться этих сроков. Единственным исключением может быть наличие в заголовке запроса клиента директивы Cache-Control: only-if-cached, которая заставляет прокси-сервер возвратить кэшированный ответ без проверки его актуальности на исходном сервере. Если же исходный сервер не задает срок годности ресурса, то прокси-сервер может использовать эвристически вычисленное время годности. Это время часто связывается с проверкой актуальности. Наиболее общим подходом к проверке актуальности в Web является запрос с методом Get или Head и заголовком If-Modified-Since (обсужденном в главе 6, раздел 6.2.3). Этот заголовок включает время последней модификации ресурса, который был указан исходным сервером. В некоторых случаях время создания ответа может совпадать со временем последней модификации. Атрибуты содержимого протокола НТТР/1.1 в совокупности с заголовком if-Match могут быть использованы для выполнения проверки актуальности для версий ресурсов (см. главу 7, раздел 7.3.3). Исходный сервер может вернуть полную копию ресурса (вместе с ответом 200 OK) или ответ 304 Not Modified без тела ответа. Однако проверка актуальности требует полного цикла НТТР-обмена запросом и ответом.

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

1.       Эвристика, основанная на фиксированном времени хранения. Кэш может хранить ответ в течение фиксированного интервала времени.без проверки актуальности. Однако сервер обещает уведомить кэш в случае изменения ресурса в течение периода храпепия. После истечения этого периода, кэш может проверить ресурс на актуальность. Данный подход, описанный в [LC97J, переносит накладные расходы по проверке актуальности ресурсов на сервер, который теперь должен взаимодействовать со всеми кэширующими прокси-сер- верами, которым он обещал сообщить об обновлениях ресурсов. Если исходный сервер должен уведомить большое число прокси-серверов, то этот способ не слишком подходит. Отметим, что при этом требуется взаимодействие для того, чтобы сервер мог уведомить кэши об истечении времени храпения. Алгоритмы, основанные на фиксированном времени хранения, широко обсуждаются в литературе, по они еще не реализованы в популярных кэширующих прокси-серверах. Одна из причин заключается в том, что они требуют совместных действий.сервера и кэша.

2.       Подход, основанный на времени жизни (TTL — Time То Live). С каждым ответом связано время истечения срока его годности. Когда этот интервал времени закапчивается, ответ рассматривается как устаревший. В течение срока годности кэш не перепроверяет его актуалыюсгь и, тем самым, остается возможность того, что будет использоваи устаревший ответ. Значение TTL может изменяться в зависимости от ресурса и основано на следующих факторах:

Время истечения срока годности определено в поле заголовка ответа. Кэш

может его использовать непосредственно или модифицировать на основе своей политики. Если время годности ресурса не указано, то кэш может назначить определенное зпачепие TTL для ресурсов данного вида.

Частота запросов кэшированного ресурса. Ресурсам, запрашиваемым чаще, Можно назначить большее TTL.

Мобильная среда. Непостоянное подключение и низкая скорость соединения пользователей мобильных устройств [HL96] может привести к заданию специальных значений TTL для ответов, запрашиваемых такими пользователями.

Время последней модификации ресурса. Адаптивный алгоритм может предположить, что недавно модифицированный ресурс может спова измениться [Cat92]. Следовательно, кэш может назначить меньшее зпачепие TTL для недавно измененного ресурса. Кэшировапному ответу может быть пазпачепо большее TTL, если на исходном сервере ресурс не изменялся в течение длительного времени. Информация о времени изменения берется из заголовка ответа Last Modified.

Подходы, основанные на TTL, являются достаточно популярными.

Поддержание согласованности может оказать существенное влияние на время ответа кэша, т.к. каждый запрос для проверки актуальности требует установления соединения с исходным сервером Lfoh99]. Высокая цена установления соединения с исходным сервером приводит к необходимости сокращать число запросов на обновление. Как было отмечено в главе 10 (раздел 10.3.2) и в ряде исследований [AFJ99, KW97], ответ 304 Not Modified составляет значительную долю (от 10 до 30 процентов) всех ответов. В главе 13 (раздел 13.1) будут обсуждепы некоторые методы сокращения числа ответов 304 Not Modified. Такие методы снижают число отдельных соединений, требующихся для проверки актуальности ресурсов, путем использования «подсказок» исходного сервера, указывающих, когда ресурс изменился.

Источник: 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