Что Такое GZIP

Введение

gzip (GNU zip) это утилита сжатия информации, работает с файлами с расширением *.gz, для декомпрессии используется библиотека zlib.dll. Применяется на Unix-серверах для передачи информации от сервера клиенту (браузеру) в компрессированном виде. При передаче по каналу связи сжатой информации существенно уменьшается ее количество и, следовательно, пропорционально повышается скорость ее передачи. Информация, передаваемая браузеру, в большинстве случаев представляет собой текстовый файл – HTML-код страницы, хорошо поддающийся сжатию. Сжатие текстовой информации может достигать десятков процентов и позволяет получить соответственное снижение траффика и увеличение скорости. Степень сжатия зависит от содержания страницы. Если на странице много плохо сжимаемого контента, например графики, то эффективность сжатия будет ниже. Следует заметить что не все сайты настроены для передачи сжатого контента, например, сервер narod.ru сжимать не умеет. Правда там размещены домашние странички, для объема которых сжатие не очень существенно. В основном же, практически все сайты уровнем чуть выше домашних страниц, работают на серверах, поддерживающих gzip-сжатие. А таких в сегодняшнем Интернете по моим наблюдениям свыше 90%.


В среднем, вы в любом случае получите больший или меньший, но все еще положительный эффект. Потенциальную эффективность сжатия какой-либо конкретной страницы можно проверить на сайте port80software.com, введя в поле "compression check" адрес интересующей страницы. Для иллюстрации я приведу результат проверки одной из страниц нашего форума:


Оценка эффективности gzip сжатия

Как видите, оригинальный размер страницы – более 106 кБ, а сжатый – менее 17 кБ. Это значит, что при использовании gzip по каналу связи будет передано всего 15 % оригинального размера страницы что увеличит скорость ее получения почти в 6,4 раза.


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


Механизм взаимодействия сервер-клиент заключается в передаче браузером серверу запроса на передачу ему информации в сжатом виде. В заголовок запроса браузера при этом вводится строка
Accept-encoding: gzip, deflate
Получив такой запрос, сервер производит сжатие и передачу запрошенного файла обратно, указав об этом строкой
Content-Encoding: gzip
Полученная сжатая информация декомпрессируется браузером, записывается во временный файл и выводится на экран.


Далее я не буду вникать в особенности работы сервера, влияния на него со стороны клиента-браузера нет уже никакого, да оно и не нужно. А вот в работе браузера надо проверить что запрос на передачу gzip действительно отправляется. Без такого запроса сервер просто не узнает что браузер готов обработать gzip и отправит файл без сжатия. Обычно браузеры не показывают служебную информацию и поэтому такая проверка несколько затруднительна, но мы найдем выход из положения.

Проверки и тесты

Проверить наличие запроса от браузера на сжатие можно просто посмотрев заголовки обмена служебной информацией. Проблема в том, что встроенных инструментов для этого у браузеров нет и надо использовать сторонний софт. Для такой маленькой задачи ставить отдельную программу мало смысла. Проще воспользоваться простым скриптом который предоставили администраторы форума Ру-борд для просмотра заголовков. Если в показанном заголовке вы увидите в районе 4-й строки запись
HTTP_ACCEPT_ENCODING => gzip, deflate
то ваш браузер отправляет нужный запрос и почти с полной вероятностью можно сказать что все в порядке. В этом случае дальше эту статью вы можете не читать.
Ну а если такой строки нет, то значит вы можете сильно съэкономить на траффике, найдя и устранив проблему. Аналогичный тест отправляемого запроса можно проделать на сайте seolab.ru. И гораздо более наглядную проверку можно произвести на нашем форуме. Внизу страницы есть индикатор работы gzip, зеленый или красный. Если вам показан красный, то есть смысл щелкнуть по нему и попасть в тему, где мы обсуждаем возникающие проблемы и ищем способы их решения.


Практический тест изменения скорости можно проделать с использованием интересного сервиса он-лайн ускорителя WebWarper.net. В основе этого сервиса лежит "насильное" использование gzip-сжатия. Для использования этого сервиса следует ввести интересующий вас адрес сайта не в адресной строке браузера, а в строке на указанной странице. При этом ваш запрос несжатого файла будет направлен сервису WebWarper а он перенаправит его далее, на интересующий сервер, с поправкой : "дайте мне сжатый файл". Сервер честно сожмет и отдаст файл WebWarper-у, а тот передаст его вам. Правда, кое-что вырежет и добавит рекламки от себя. Этот сервис имеет также дополнительные функции – анонимность и антивирусная защита, но это уже вне рамок данного исследования. В общем, можно сказать что результаты теста WebWarper-a будут довольно близки к тому, что вы можете получить после включения gzip. Их можно посмотреть на этой странице. Погрешность вызвана тем, что путь запроса и файла будет искривлен необходимостью прохождения через дополнительную промежуточную точку. И второе, та самая личная добавка WebWarper-a тоже, собственно, лишняя. Но эту добавку можно в принципе и не получать если использовать программу Proxomitron со специальными фильтрами, это имеет смысл если вы решите пользоваться этим сервисом постоянно, а мы туда зашли проделать только один короткий тест.


Иногда такой простой тест не удовлетворяет любопытства и хочется узнать – а насколько же все-таки реально сжимается файл ? Для сравнительно точного измерения я предложу применить программу Crystal Internet Meter. Это программа для измерения скорости передачи данных, в ней нас интересует возможность измерения объема переданной информации по секундомеру.


Загрузка с секундомером

Надо нажать Add new для запуска таймера и по окончании загрузки страницы после полного рефреша через Ctrl-F5 выделить работающий таймер и нажать Stop. После того как добьетесь состояния "gzip ON" – повторить тот же замер. Для чистоты эксперимента все остальные потребители траффика должны быть отключены. Кстати, на рисунке отображена загрузка главной страницы нашего форума с выключенным и включенным gzip.


Итак, я вас убедил что gzip вам просто жизненно необходим и вы решили эту ошибку исправить.

Проблемы и решения

Вы обнаружили наличие проблем и надо срочно заняться их устранением. Часть из них уже решена, источники найдены и ниже приводятся проверенные способы.


1. В браузере IE 6 и на нем надстроенных ( типа очень популярного Maxthon ) надо проверить что в настройках Internet Options -> Advanced установлены птички в полях Use HTTP 1.1 и Use HTTP 1.1 through proxy connections. В браузере IE 5.5 следует исправить баг обновлением Q313712; В браузере IE 6.0 аналогичный баг устранен с выходом сервис пака SP1 Q312496.


2. Если вы используете файрвол Outpost Firewall, то скорее всего, gzip отключен. Связано это с тем, что у Outpost-a есть модули подавления рекламы, и фильтры содержимого. Эти модули вырезают из страниц ненужный код но могут правильно обрабатывать только несжатые файлы. Поэтому, для обеспечения их работы, Outpost просто вырезает из отправляемых запросов браузера просьбу на сжатие файла. Об этом указано в FAQ Outposta и Базе Знаний неофициального форма Outposta; эту информацию я процитирую полностью :

Почему Agnitum Outpost Firewall отменяет сжатие страниц (gzip)?
На многих Форумах, конференциях и статьях появилась информация о том, что после установки программного продукта Agnitum Outpost Firewall отменяется сжатие веб-страниц. Да, действительно браузеры могут запрашивать данные от Web серверов в "сжатом" виде, включая поле HTTP следующей формы в запрос: "Accept-Encoding: gzip". Страницы приходят не в виде обычного текста, а в специально закодированном сжатом формате. Agnitum Outpost Firewall не поддерживает расшифровку сжатых страниц во время прохождения пакета, поэтому он отменяет сжатие, удаляя поле "Accept-Encoding: gzip" из каждого запроса браузера. Также, обращаем внимание, что на многих сайтах появились рекомендации и описания насильного включения gzip изменением в реестре Windows значения ключа. При этом указывалось, что никакое изменение в работе Agnitum Outpost Firewall не происходит. Данное утверждение неверно. Это заблуждение. Необходимо знать, что отключение gzip необходимо для правильной работы Agnitum Outpost Firewall совместно с абсолютно всеми браузерами и web-страницами, тем самым не понижая уровень безопасности системы.
Если вы хотите разрешить сжатие, наберите Regedit в командной строке и установите значение ключа "Enablegzipencoding" в: HKEY_LOCAL_MACHINE\SOFTWARE\Agnitum\Outpost Firewall на 1. Помните, что в этом случае для сайтов, использующих сжатие, не будут функционировать модули Рекламы, Содержимого и Интерактивных элементов.
Также, в этом случае официальная техническая поддержка Agnitum Outpost Firewall гарантироваться не будет.

Продукты версий 6.0 и новее полностью поддерживают сжатие страниц (gzip). Источник

То есть, с одной стороны, он экономит траффик за счет вырезания рекламы и делает систему более безопасной за счет вырезания активного контента, а с другой – теряет всю экономию и, возможно, гораздо больше, из-за передачи несжатых страниц. Здесь вам самому придется решить что для вас более важно, трафик или безопасность. Я только отмечу что функции модулей, требующих отмены gzip можно переложить на другие программы. И еще, добавлю, что у меня gzip включен и я об этом пока не жалею.


3. Программа вырезания рекламы AdMuncher поступает также как Outpost и по тем же самым причинам. Об этом много сказано в дискуссии на форуме Ру-борд. На форуме AdMuncher обещают включить поддержку gzip в версии 4.8. До тех пор, все, что выше сказано об Outpost справедливо и для нее. Однако в данном случае способом решения проблемы является решительный снос этой программы в корзину несмотря на все ее очковтирательские рапорты о якобы съэкономленном траффике. А для резки рекламы лучше воспользоваться другой программой, рекомендую обратить внимание на Proxomitron. Эта отличная программа умеет не только вырезать все что угодно из сжатых страниц, но и восстанавливать "поврежденные" запросы на сжатие контента. Она несколько сложна в тонкой настройке для начинающих, но вы всегда можете обратиться за квалифицированной помощью на форум любителей этой программы.


4. Программа Naviscope – комплексный ускоритель и индикатор – также имеет функцию вырезания рекламы. Программа заброшена разработчиками и давно не обновляется, однако по-прежнему используется многими приверженцами. Увы, она также некорректно обращается с запросом Accept-encoding: gzip, deflate ради обеспечения собственного удобства. Мне нравится эта программа тем, что она действительно универсальна и предоставляет очень много информации о текущих коннектах. Поэтому захотелось оставить ее в работе и вместе с тем пользоваться преимуществами gzip.
Выяснилось, что это возможно при использовании дополнительной программы Proxomitron и настройке их на совместную работу. Как и раньше, запросы от браузера с помощью настройки прокси надо направить на вход Навископу (127.0.0.1 port 81). Выход Навископа направить на порт 8192, прослушиваемый Proxomitron-ом : установить в настройках Naviscope – Setup – Proxy – птичку в Connect through an HTTP proxy и прописать там же адрес 127.0.0.1 и порт 8192. При этом получается что браузер отправляет запрос на gzip, Naviscope его вырезает, а Proxomitron восстанавливает соответственно настройкам. Обратно к браузеру сжатый файл проходит без проблем. В этой сцепке дополнительный Proxomitron отъедает около 2% процессора и примерно 6 МБ памяти; на мой взгляд – терпимо.
Такой вариант с установкой Proxomitron может быть универсальным решением в аналогичных случаях с другими программами, которые позволяют использовать второй промежуточный прокси.


5. Программа MyProxy версии 6.40 также замечена в некорректной обработке gzip. Этот локальный кэширующий прокси, предназначенный для ускорения работы браузера, тоже для облегчения собственной работы по вырезанию баннеров выключает сжатие. Новая версия 7.10 может работать с применением сжатия, но для этого она должна пропускать данные через свой сервер. Насколько я понимаю, он и выполнит работу по вырезанию ненужного и передаст чистый траффик на ваш компьютер. Однако это удовольствие уже стоит денег и, по большому счету, экономически не оправдывается. За отсутствием интереса я лично версию 7.10 не проверял, могу и ошибаться.


6. Прокси сервер ISA версий 2000 и 2004 также зачислен в ряды вредителей. Ввиду того, что ISA серверы обычно устанавливаются в больших локальных сетях, технических методов исправления положения на рабочей станции пока не известно. Если у кого-то есть решение проблемы, прошу сообщить любым удобным способом.

Дополнение : Илья Задворошный (огромное ему спасибо!) прислал скриншот настроек сжатия для ISA сервера и вариант решения от Microsoft.

Настройки gzip сжатия для ISA сервера

Вообще, ответ на вопрос : что использовать – баннерорезку или gzip-сжатие и от чего эффект будет больше, зависит от ваших предпочтений в Интернете. Если вы предпочитаете сайты, перенасыщенные вырезаемыми баннерами или другой вырезаемой тяжелой графикой, то баннерорезка, возможно, будет более эффективна. Я только напомню, что показ баннерной рекламы для многих сайтов является источником финансов для оплаты хостинга и если вы повырезаете все баннеры, то в один прекрасный день рискуете не найти в сети вашего любимого сайта. Если же на предпочитаемых вами сайтах рекламы и графики меньше чем текста, то отключенное gzip-сжатие несомненно приведет к растрате траффика, снижению скорости и потерям времени.
Мои предпочтения весьма разнообразны и я учитываю среднюю эффективность за относительно большой период. Поэтому лично для себя я выбираю gzip и скорость. Вам же посоветую для принятия окончательного решения провести длительный (20-50 часов) тест "до и после" с тщательным измерением и записью результатов как на лабораторных работах в школе. И уже на основании своего эксперимента вынести свой вердикт.



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

Линки по теме

http://www.gzip.org/ – The gzip home page
http://www.faqs.org/rfcs/rfc1952.html – RFC 1952 – GZIP file format specification version 4.3
http://www.webreference.com/in[...]rs/http/compression/ – HTTP Compression Speeds up the Web
http://www.desilva.biz/gzip-test.php – Gen.I designs – Web page compression / gzip test
http://www.whatsmyip.org/mod_gzip_test/ – www.whatsmyip.org > mod_gzip Test
http://perl.apache.org/docs/tu[...]ion/compression.html – Web Content Compression FAQ
http://www.port80software.com/support/p80tools – Tools – compression check
http://www.15seconds.com/issue/020314.htm – Web Site Compression – How It Works


Дискуссии и информация на русском языке -

http://www.xakep.ru/magazine/xs/063/046/1.asp
http://arbuz.uz/forum/index.php?showtopic=693
http://forum.ru-board.com/topi[...]&topic=13162&start=0
http://earnik.com/forum/index.php?showtopic=9682&st=0
http://forum.ru-board.com/topi[...]topic=0094&start=840
http://www.photographic.com.ua/faq.aspx#gzip
http://www.kpnemo.ru/internet/[...]7/14/lubov_zkatilas/
http://forum.oszone.net/showthread.php?t=97630 – Ускорители (компрессоры) интернета – реальное сжатие траффика


Abram4 /16.05.2005 12:18/
исправлено и дополнено 28.09.2005 01:49

Прочитано 3.456 раз

Общая оценка документа [показать форму]

страница еще не оценена