кэширование

Previous pageReturn to chapter overviewNext page

 

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

 

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

Алгоритм работы программы при кэшировании следующий.

 

При сохранении ресурса в кэше запоминается время его получения с сервера и время создания (модификации) на самом сервере. Правда, этот атрибут может и отсутствовать - сервер по какой-то причине может его не выдать. Если далее появляется запрос на прокси-сервер на доступ к этому ресурсу и он имеется в кэше, то производится вычисление параметра TTL - прогнозируемого времени жизни. Он берется как процент от времени, который ресурс существовал на момент его записи в кэш. Смысловое значение этого параметра - это прогноз, что если ресурс не изменялся какое-то время, то он не будет также сколько-то меняться в дальнейшем. 

 

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

 

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

 

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

 

Вычисление TTL и прогнозирование можно совсем отключить - прокси-сервер будет перепроверять ресурсы всегда. Это сведет экономию трафика к минимуму, но зато клиенты всегда будут иметь гарантировано свежие данные.

 

Данные также могут быть отмечены как личные - иметь HTTP-атрибут private. Они будут кэшироваться, но в дальнейшем доступны из кэша только тому пользователю, кто их сохранил. Cookie с сервера также сохраняются в кэше и выдаются в дальнейшем клиенту, но если данные отмечены как личные и имеют cookie, то они в кэш не записываются - подразумевается, что они могут нести важные личные сведения. Также отметим, что кэшируются только запросы типа GET.

 

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

 

Для большого сбережения трафика можно рекомендовать параметры: TTL - 70-150%, минимум 12-24 часа, максимум 15-30 дней. При таких параметрах можно иметь 25-35% экономии трафика, но придется переключать режимы кэширования агентом при посещении быстрообновляемых ресурсов.

 

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

 

В клиентском агенте предусмотрено 3 режима кэширования:

 

Режим экономии. Используются настройки, заданные администратором. Подразумевается, что параметры, связанные с вычислением TTL настроены на режим максимального сбережения трафика.
Проверять все объекты. кэш используется, но каждый объект будет перепроверен. Этот режим и должен использоваться, когда надо иметь гарантировано свежие данные.
кэширование отключено - данные из кэша не используются, но вновь полученные от сервера объекты заносятся в кэш и при этом его обновляют. Это предусмотрено для особых случаев, когда по какой-то причине в кэше сохранились некорректные данные. Переход в режим перепроверок всех данных при этом может не помочь. Кстати, эта проблема принудительного обновления некорректных данных присутствует на всех прокси-серверах и решается по-разному. В некоторых предусматривается возможность просмотра всех объектов в кэше и возможности их удаления. В Microsoft ISA Server в таких случаях приходится идти на крайние меры, вплоть до полной очистки кэша.
В этот режим включается также, если броузер в запросе выставил атрибут no-cache, что происходит обычно при нажатии на кнопку обновления страниц.

 

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

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

 

Но тут надо учесть некоторые обстоятельства. Все индексы и каталог находятся в оперативной памяти. Для ее оценки примерно учесть, что на 1 гигабайт кэша приходится примерно 100000 объектов. Занимаемая при этом оперативная память составит примерно 20-30 мегабайт. Для 1000000 объектов (10 гигабайт кэша) надо на индексы уже 200-300 мегабайт оперативной памяти. Если памяти достаточно, то задержек к доступу к объектам в кэше не будет практически никаких. При нынешних ценах на память это не критично - трафик обходится дороже.

 

Большое количество объектов в кэше влечет значительные задержки при загрузке каталога и его выгрузке при остановке программы. При этой операции процессор загружается на все 100%. Загрузка каталога из 100000 объектов на компьютере P4-1600 занимает примерно 1 минуту. Пока кэш не загрузился, пользователи работать уже могут, но операции с кэшем будут просто недоступны. Выгрузка каталога производится по стопу сервиса программы. Ввиду возможной продолжительности этой операции возможны ситуации неполной записи из-за преждевременной терминации процесса системой. Для предотвращения потери данных выгрузка каталога производится сначала во временный файл и если она была не завершена полностью, при последующей загрузке каталога используется ранее сохраненный - программа в процессе работы каждые 12 часов производит его автоматическую выгрузку.

 

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

 

Новое начиная со сборки 208.

 

Индекс кэша реализован ввиде SQL базы данных и в оперативной памяти весь не хранится. Операция инициализации (загрузки) кэша занимает минимальное время, операции выгрузки индекса нет.

 

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?howworkproxycache.htm

Сайт разработчиков Traffic Inspector