Реактивные веб-сайты
В методе gzip (RFC
1952) перед сжатым потоком добавляется десять байт заголовка, а
после — восемь байт, состоящие из контрольной суммы (CRC32) и
длины несжатых данных;
? deflate (x-deflate) — представляет собой сжатый алгоритмом
DEFLATE поток без заголовка и других метаданных;
? compress (x-compress) — в данном случае тело ответа такое же,
как если бы оно было сжато UNIX-программой compress. Compress
использует алгоритм LZC, являющийся реализацией LZW (Lempel—
Ziv—Welch), с указателями переменного размера, как в алгоритме
LZ78;
? bzip2 (x-bzip, bzip) — тело ответа совпадает с результатом работы
программы bzip2, алгоритм более эффективен, чем compress и се-
мейство DEFLATE, но работает значительно медленнее. В bzip2
применяются преобразование Барроуза-Уилера, MTF-преобразо-
вание (move-to-front) и кодирование Хаффмана;
? sdch (Shared Dictionary Compression Over HTTP) — относительно
новый, предложенный компанией Google в сентябре 2008 года
метод уменьшения избыточной информации в вебе. Основная
идея — не передавать дважды одинаковые куски документа (на-
пример, шапку, «подвал» страницы, общие CSS- и JavaScript-фай-
лы). Метод построен на алгоритме VCDIFF (RFC3284), ответ допол-
нительно может быть сжат любым другим поддерживаемым брау-
зером методом сжатия (например, gzip).
———————— Page 52————————
1
Алгоритмизация сжатия текстовых файлов 5
Метод sdch сильно отличается от прочих и имеет смысл только для
группы страницы, эффективность же остальных методов проще оценить
на примере HTML-страницы, полученной склейкой первых страниц не-
скольких новостных изданий:
Без сжатия gzip/deflate bzip2 Compress
587828 132023 88263 222091
У архиваторов gzip и bzip2 есть параметр, управляющий эффектив-
ностью компрессии, его значение изменяется от единицы до девятки, и
чем больше значение, тем эффективнее сжатие и тем больше времени оно
занимает. В тесте, проведенном выше, этот параметр для обоих архивато-
ров был установлен в максимальное значение.
Худший результат типично показывает метод compress, по этой при-
чине многие браузеры отказались от поддержки этого метода. Лучший ре-
зультат — у bzip2, но этот метод, весьма требовательный к ресурсам, лишь
недавно стал появляться в браузерах — на данный момент его поддержи-
вают OmniWeb, w3m, lynx и ранние версии Google Chrome.
Эффективность Gzip bzip2
Исходный размер 189058 Б 189058 Б
1 3,333 мс / 44572 Б 40,282 мс / 32247 Б
2 3,519 мс / 42685 Б 43,716 мс / 29690 Б
3 4,713 мс / 42685 Б 43,765 мс / 29690 Б
4 5,274 мс / 39111 Б 44,213 мс / 29690 Б
5 6,526 мс / 37039 Б 43,704 мс / 29690 Б
6 8,036 мс / 36206 Б 43,814 мс / 29690 Б
7 9,098 мс / 35940 Б 43,934 мс / 29690 Б
8 12,87 мс / 35713 Б 43,725 мс / 29690 Б
9 14,319 мс / 35707 Б 45,129 мс / 29690 Б
———————— Page 53————————
52 РЕАКТИВНЫЕ ВЕБ-САЙТЫ
На сайте языка программирования PHP, в комментариях к описа-
нию функции gzcompress есть результаты, иллюстрирующие, насколь-
ко может зависеть затраченное время и эффективность сжатия архи-
ваторов gzip и bzip2 от параметра, задающего эффективность ком-
прессии, а также приводящие разницу в требованиях к ресурсам этих
архиваторов.
Кажущееся странным поведение архиватора bzip2 с параметром,
большим единицы (результат архивации не улучшается), объясняется
очень просто: параметр от одного до девяти в этом случае задает размер
блока — от 100 Кб до 900 Кб.
Что в точности означает этот параметр, для нас маловажно, сущест-
венно то, что если выбранный файл (исходный размер — 184,5 Кб) цели-
ком помещается в блок, алгоритм bzip2 не улучшает результат при увели-
чении размера блока, но сжатие занимает больше времени.
Вывод — если вы настраиваете на сервере сжатие bzip2 в реальном
времени, выбирайте размер блока чуть большим, чем средний размер
страниц вашего сайта.
У gzip, как видно, зависимость однозначная, оптимальная стратегия в
данном случае — установить такой параметр эффективности сжатия, ко-
торый ваш сервер выдержит, с некоторым запасом.
Существуют также аппаратные решения, позволяющие эффектив-
но сжимать трафик алгоритмом gzip со скоростью вплоть до 10 гига-
бит в секунду, например, платы расширения фирмы Comtech AHA
Corporation.
2.2.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
