Навигация:  Traffic Inspector > О программе > Основные функции > Прокси-сервер >

Кэширование

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 запроса файл явно не указан, то тип данных не известен - в результате правило может не сработать.

 

Предусмотрено три режима кэширования:

 

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

 

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

 

Индекс кэша реализован ввиде SQL-базы данных, файл proxy.db3. В случае потери или порчи файла индекса данные в кэше будут потеряны.

 

 

 

 


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

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