Статья, опубликованная в журнале InZone № 977 от 09.08.2006г.
Бережем трафик, время и деньги. Кэширующий HTTP прокси-сервер HandyCache.
Там царь Кащей над златом чахнет: Там русский дух... там Русью пахнет
Вопрос первый: что это? Это - программа, которая позволяет не качать из Интернет по несколько раз один и тот же файл, одну и ту же картинку, одну и ту же страницу. Закачал один раз - и пользуйся сколько надо. Разумеется, это "сколько надо" настраивается и не будет ситуации, когда на сервере что-то обновилось, а мы видим устаревшую картину. Сохранение истории: куда обращались, какие файлы, и с какого сайта грузились, что с ними сделано. Кроме этого, блокирование загрузки рекламы, да и вообще любых файлов, как и блокирование целых страниц и сайтов - со всем, что там есть. Встроенный Dialer ("звонилка") для пользователей Dial-Up и полноценный автономный режим: все, что было просмотрено в online, можно позже просмотреть без подключения к провайдеру в offline.
Вопрос второй: а зачем оно надо? Да, в общем-то, незачем - можно прекрасно обходиться и без него… если в наличии "реактивный" безлимитный канал, да желательно за чужой счет. Или просто в кошельке много "лишних" денег. Если жизнь такими подарками обделила, то стоит подумать над экономией трафика, денег за этот трафик и времени на него же.
Во всем этом нам помогают кэширующие прокси-серверы. Основное назначение программ этого класса: сохранить полученные из Интернет данные (страницы, скрипты, рисунки, таблицы стилей и прочие файлы) на локальном диске и при повторном обращении к ним взять их не с удаленного сервера, а с локального. Какой бы "реактивный" канал у вас не был, с локального HDD загрузка всегда будет "реактивней", даже если кэш хранится не на локальном компьютере, а на сервере в локальной сети. Опять забежал вперед: да, HandyCache работает не только на локальном компьютере, но и может раздавать трафик в локальной сети.
Для обычного среднестатического пользователя экономия трафика с помощью HandyCache достигает 40-70%. Разумеется, для каждого экономия индивидуальна. Если кто-то ежедневно гуляет по новым сайтам/страницам, к которым позже никогда не возвращается или качает гигабайтами файлы без повторных загрузок, то для таких пользователей экономия минимальна. Скажу честно, я как раз из этой категории и у меня экономия всего 11% - у меня, как и любого, есть излюбленные сайты, которые я посещаю регулярно и именно за их счет я получаю экономию трафика. А для любителей онлайн игр (Бойцовский клуб, Пробуждение, Средиземье и им подобных) и общения на форумах экономия около 80%.
Вопрос третий: почему HandyCache, а не что-то другое? От других программ этого класса HandyCache отличается, во-первых, практически беспредельными возможностями по управлению трафиком: что загружать из Интернет, что блокировать, что брать только из кэша, для разных сайтов свои особые правила и т.п. - подробней про это я расскажу ниже. Во-вторых, в отличие от авторов других подобных программ, автор HandyCache очень оперативно реагирует на разумные предложения по улучшению программы. В-третьих, другие программы из этой когорты, как говорил О.Бендер, слишком любят деньги. Впрочем, может и не слишком, но они их просят, и даже требуют. А пользование HandyCache абсолютно бесплатно. Нет, автор HandyCache тоже не равнодушен к деньгам (как говорится, любой труд должен был оплачен), но оплаты никакой не требует - только по желанию благодарных пользователей. А благодарные пользователи, и я сам (чесслово стыдно!) лишь пишем ему проникновенные письма с благодарностью и не шлем ни копейки денег. На этом месте, читателям уже пользующимся HC и оценившим его достоинства следует хором сказать: "Спасибо Вам, дорогой Александр Иванович, за вашу программу!" - и хотя бы SMS-кой поддержать автора. Программа экономит куда больше денег.
Итак, хватит общих слов и угрызений совести - смотрим на программу. Как она выглядит и что, собственно, она умеет.
Монитор - главное окно HandyCache, в котором показывается история загрузок, текущие активные соединения, их состояние, ответы удаленного сервера и примененные к загружаемым файлам правила. Здесь всегда видна оборотная сторона жизни браузера: какие файлы он грузит, откуда, какие ошибки при этом возникают. Кроме этого, можно остановить загрузку, загрузить файл повторно, открыть в браузере ранее загруженный файл (если тип файла это позволяет), просмотреть на диске каталог кэша в котором сохранен файл(ы). Отсюда же, одним кликом, URL помещается в "Черный" или "Белый" списки. В верхнем левом углу - статистика за текущие сутки, а вверху график, показывающий входящий/исходящий трафик. Трудно придумать что-либо лучше и информативнее.
Списки в HandyCache - это его интеллект, наборы правил, которые определяют действия при обращении к URL. Списков несколько и каждый отвечает за свой, так сказать, участок фронта.
"Белый" список - в общей иерархии он первый, но по сути это большой список исключений из всех остальных списков. Поэтому вернемся к нему после знакомства с другими списками.
"Черный" список - правила для URL файлов, загрузка которых всегда будет пресекаться, блокироваться. Разумеется, основное предназначение этого списка - блокирование рекламы. HandyCache не вмешивается в код страницы как некоторые другие "баннерорезалки" - вместо этого он блокирует обращения к запрещенным правилами URL. Плюс такого подхода в том, что файл не разжимается (если поступил в сжатом gzip виде) и в нем ничегошеньки не меняется - в отличие от некоторых "баннерорезалок", которые попутно с удалением ссылок на баннеры вносят ошибки в код страницы, приводящие к некорректному отображению страницы браузером. Минус в том, что страница продолжает "помнить" про заблокированные картинки: под них оставлено место, видно, где должны были быть заблокированные рисунки, но с другой стороны, дизайн страницы остается в виде, задуманном автором, он не расползается из-за отсутствия незагруженной картинки. Другой полуминус: браузер все-равно запрашивает запрещенные URL, но… эти запросы не идут никуда дальше HandyCache - блокирование происходит мгновенно и браузер просто "думает" что запрошенный файл недоступен как если бы был удален.
Этот же список применим и для блокирования целых сайтов бдительными родителями и администраторами сетей ограничивающих своих подопечных от просмотра "нежелательного контента", а что под ним понимать решайте сами: хоть microsoft.com, хоть playboy.com - кто, с чем борется.
Пользователи браузера Opera найдут аналогию "Черного" списка с оперным filter.ini и будут правы: принцип точно такой же, но в HandyCache гораздо больше гибкости в указании правил.
Список "Запись в кэш" - с одной стороны это самый простой список: ведь затем нам и нужен кэширующий прокси-сервер, чтобы все хранить в кэше и по мере надобности оттуда запрашивать. А поэтому здесь у нас по умолчанию только одно правило: "сохранять все". Однако, например, для использования на одном домашнем компьютере это слишком доброе правило. HandyCache, конечно, будет, как царь Кащей чахнуть над любыми файлами, которые мы ему отправим на хранение в кэш, но подумайте: зачем нам хранить в кэше архивы программ или "многометровые" видеофильмы? Разве мы будем скачивать эти же файлы повторно? Нет! А значит в кэше им не место - для этого в исключения слишком доброго правила вписываем расширения файлов, которые мы не хотим хранить в кэше: всевозможные zip, rar, mpg, avi и т.п. А можно поступить и по-другому: в настройках кэша запретить сохранение файлов больше и меньше указанных. При этом никто не запрещает совместить оба способа.
Список "Не обновлять" - файлы, удовлетворяющие правилам этого списка загружаются из Интернет только один раз. После чего всегда берутся из кэша. До тех пор, пока не устареют и не будут удалены из кэша при очередной очистке. Многие файлы, в основном графика, могут не меняться на сайтах месяцами, а на некоторых и годами. И правила из этого списка запрещают не только бесполезную повторную загрузку этих файлов, но даже и просто проверку их на обновление - чтобы время и трафик не тратить на запросы. На роль таких необновляемых файлов по умолчанию определены картинки, флэш-анимация, JS-скрипты и каскадные таблицы стилей (css). Выбор, что называется, проверенный временем. Однако все когда-то меняется и поэтому рекомендуется периодически проверять обновление файла. Для этого в правилах можно задать время, через которое файл в кэше будет считаться устаревшим и при следующем обращении к нему будет проверено, не обновился ли этот файл на сервере.
Список "Только из кэша" - не надо путать его с предыдущим, они очень разные! Файлы, URL которых удовлетворяют правилам из этого списка, не будут загружаться из сети - только из кэша, но если их нет в кэше, то… значит, загружаться они не будут вовсе. В буквальном смысле: только из кэша или ниоткуда. В Opera есть похожий режим: "показывать рисунки только из кэша", но в HandyCache дело не ограничивается только рисунками, а применяется к любым файлам.
Список "Переадресация" - отличный инструмент. Все мы встречали сайты, которые лишь переадресовывают нас на другие, при этом конечный URL передается в запросе как параметр скрипта. Во-первых, неизвестно, что делает на сервере скрипт-отправитель, во-вторых, мы должны ждать: сначала мы соединяемся с сервером-отправителем, потом на нем отрабатывает скрипт, затем он переадресовывает нас на конечный сервер и только после этого мы, наконец, с ним соединяемся. На практике это довольно ощутимая пауза. HandyCache отсекает часть запроса на переадресующий сервер и соединение устанавливается сразу с целевым сайтом.
Только что мы отсекли от запроса лишнее, а теперь противоположный пример: мы сами хотим, чтобы наш запрос прошел через промежуточный переадресующий сервер. Зачем? Все просто: мы хотим еще больше сэкономить трафик. Среди особо экономных пользователей, в первую очередь среди пользователей GPRS, популярны WEB-сервисы, которые выступают в роли промежуточных архивирующих серверов. От клиента они получают запрашиваемый URL, скачивают его к себе, сжимают текстовые документы с помощью алгоритма gzip, а графика ужимается за счет потери качества (что не сделаешь ради экономии), и в таком виде отправляется клиенту. Экономия 3-7 раз. При этом правда теряется время на переадресацию и тем более сжатие, но когда деньги берут не за время, а за трафик - экономия действительно стоит таких жертв.
Однако охотники за экономией рискуют получить еще большую, совершенно неоправданную потерю времени, когда отправляют на сжатие уже сжатый контент. Повторное сжатие не даст ничего кроме потери времени. Довольно много сайтов отправляют уже сжатый контент - для них нужно сделать исключение и поможет в этом "Белый список" о котором ниже.
Список "Преобразование URL". Некоторые сайты дополняют URL динамически изменяемой составляющей: это может быть номер сессии, или какие-то внутренние параметры. Делается это в нужных и благих целях, но из-за этого URL одной и той же страницы, одного и того же файла, каждый раз выглядит по-новому. Из-за этого файлы скачиваются с сервера и сохраняются в кэш как уникальные. Более того, в следующий визит, вместо того, чтобы взять файлы из кэша они будут вновь скачаны с сервера и вновь сохранены как уникальные в уникальном каталоге. Вместо экономии - сплошной расход и трафика и места на диске: одни и те же файлы сохраняются кучу раз. Впору кричать "Караул! Грабят!". Список правил "Преобразование URL" как раз и спасает от этой напасти: переменная составляющая URL отсекается и получается URL в чистом виде - в таком виде файлы и будут сохранены в кэш, а когда понадобится, взяты из него. Самих запросов эти преобразования никак не касаются: удаленный сервер будет получать запросы в том же виде, как и раньше.
"Внешние прокси-серверы". Как и следует из названия, здесь указываются внешние прокси-серверы. Вроде ничего необычного, но как бы не так! HandyCache умеет работать с целым списком прокси-серверов. Начнем с того, что списков два. В первом указываются безусловные прокси-серверы - именно через них обычно идет весь трафик. Указать их можно сколько угодно, но активным в конкретный момент времени может быть только один. При переходе от одного провайдера к другому, или просто по желанию, можно переключиться на другой прокси-сервер.
Интереснее второй список: "Условные прокси-серверы". Через них трафик пойдет только при выполнении заданного условия. Распространенная ситуация: для общения с неким сайтом ваш "родной" прокси-сервер не подходит - сайт отказывается признать в вас соотечественника и на этом основании не допускает к своим файлам или вводит жесткие ограничения на объем трафика и/или на время скачивания. У вас есть на примете другой прокси-сервер, с правильным "гражданством", но не такой быстрый, как основной - пускать через него весь трафик не желательно. Вот тут то и спасает список "Условные прокси-серверы": задав капризный сайт условием для медленного сервера мы получим требуемую картину - весь трафик пойдет через основной прокси, а только для заданных сайтов - через условный. При этом не нужно совершать дополнительных телодвижений, вроде постоянных переключений текущего прокси с помощью какой-нибудь утилиты для браузера.
Вот теперь мы готовы к знакомству с "Белым списком". Этот список проверяется самым первым и в нем указывается, какие из остальных списков для определенных URL проверяться не должны. Почти во всех списках можно указать исключения для конкретных правил, но в "Белом списке" исключения - это сами списки, целиком.
Например, требуется запретить запись в кэш файлов с некоего сайта. Создаем для этого сайта правило и отмечаем список "Запись в кэш" - и правила этого списка к данному сайту применены не будут. Или, например, WEB-мастеру требуется видеть свое творение во всей красе: с графикой, с рекламой и всем прочим - отмечается "Черный список" и все, что блокируется на других сайтах, на этом будет на своем месте. Если работа над сайтом в разгаре и файлы часто изменяются - запрещаем список "Не обновлять".
Сами ключевые условия для правил в списках пишутся в двух форматах: или с использованием общепринятых масок "*" и "?" - условие в таком формате должно обязательно начинаться с символа "+", например, условие "+*domen.com*" означает "все файлы с домена domen.com и его субдоменов". Или с использованием регулярных выражений. Тем, кто впервые слышит это словосочетание или наслышан, что это "муть еще та" - не пугайтесь: во-первых, HandyCache уже имеет общеприменимый набор правил "на каждый день", во-вторых, в имеющиеся правила по образцу и подобию очень легко внести изменения под свои конкретные нужды, в-третьих, для опробования правил в HandyCache имеется "Тренажер". В нем указывается условие, вводится URL и "Тренажер" дает ответ: удовлетворяет URL введенному условию или нет. Если что-то не так - сразу, не отходя от кассы, можно внести изменение в условие (или в URL) и проверить еще раз. "Тренажер" - очень приятная мелочь в составе HandyCache. Но не единственная.
Еще о приятных мелочах. HandyCache интегрируется в браузер и просматривая страницу можно в два клика отправить какую-либо картинку или всю страницу в нужные списки. Пока автоматическая интеграция реализована только для IE, для Opera необходимо вручную править ini-файл меню. Для пользователей IE приятный довесок: встроенный редактор контекстного меню IE.
"Звонилка" - самая обычная, без выкрутасов, только необходимый минимум: поддержка нескольких провайдеров, перезвон при обрыве связи, ограничение минимальной скорости соединения и дозвон/отключение при запуске/закрытии HandyCache или при поступлении запроса от браузера. Минимальные потребности удовлетворяет, а если нужно что-то большее следует обратиться к специализированным программам.
Всеми ключевыми действиями HandyCache можно управлять с помощью назначаемых пользователем горячих клавиш без открытия главного окна программы.
HandyCache умеет "раздавать Интернет" в локальной сети. Почему-то сложился стереотип, что это должна быть небольшая сеть, хотя никаких ограничений на этот счет нет. Для настройки доступа необходимо в браузерах пользователей в качестве прокси-сервера указать IP-адрес компьютера, на котором установлен HandyCache, а в настройках самого HandyCache назначить пользователям имена и пароли или имена и IP-адреса пользователей. Для указанных имен ведется статистика: кто, сколько израсходовал трафика, и у кого какая при этом получилась экономия за счет применения кэша. Статистика считается посуточно для каждого пользователя. Кроме статистики в истории загрузок в Мониторе можно видеть, какой пользователь, какие URL запрашивал.
"Сокровищница" HandyCache - файловый кэш - хранится на диске в виде, повторяющем структуру посещенных сайтов. Т.е. для каждого домена своя папка и в ней полученные файлы лежат в том же виде как они хранятся на самом сайте. Удобно для поиска и просмотра файлов вручную или с помощью специализированных программ - например, Архивариус 3000. Размещаться файловый кэш может как на локальном диске, так и на сетевом. И для особо требовательных пользователей HandyCache может работать с двумя наборами каталогов для хранения кэша. В каждом наборе два каталога: один только для чтения, другой для чтения и записи. Тем, кто пользовался или пользуется CoolProxy пригодится возможность использовать накопленный в CP файловый кэш в режиме чтения.
Кэш не имеет жесткого ограничения размера, и чтобы он не разросся до неприличных размеров, его требуется периодически очищать. Очистка производится по нескольким критериям: дате последнего использования, типу и размеру файлов.
Для расширенного просмотра истории посещений, а также поиска и просмотра сохраненных страниц в автономном режиме есть дополнительная утилита hc.Historian другого автора. Она позволяет найти в кэше страницы по дате, адресу или заголовку и просмотреть их во встроенном браузере или в браузере по умолчанию.
Я рассказал лишь самые общие сведения о HandyCache, но думаю сказанного вполне достаточно, чтобы сделать вывод: HandyCache - уникальный на сегодняшний день кэширующий прокси-сервер. Главное его отличие от "родственников": он не просто кэширует трафик - он дает возможность распорядиться разным трафиком по-разному, именно так как требуется в каждом конкретном случае. Он не просто позволяет сэкономить время и деньги - с HandyCache это получается как бы само собой.