Алгоритмы сжатия конкретно оптимизированы для содержимого HTML?

Есть ли какие-либо алгоритмы сжатия - с потерями или без потерь - которые были конкретно адаптированы для контакта с реальным (грязный и недопустимый) содержимого HTML?

В противном случае, какие характеристики HTML мы могли использовать в своих интересах для создания такого алгоритма? Каково потенциальное увеличение производительности?

Кроме того, я не задаю вопрос для обслуживания такого содержания (через Apache или любой другой сервер), хотя это, конечно, интересно, но сохранить и проанализировать его.

Обновление: Я не имею в виду GZIP - это очевидно - а скорее алгоритм, специально предназначенный для использования в своих интересах характеристик содержимого HTML. Например, predictible структура тегов и древовидная структура.

7
задан hmason 10 March 2010 в 17:28
поделиться

8 ответов

Я не знаю стандартной библиотеки сжатия , явно оптимизированной для содержимого HTML .

Тем не менее, HTML-текст должен хорошо сжиматься с помощью общих алгоритмов (прочтите нижнюю часть этого ответа, чтобы узнать о лучших алгоритмах). Обычно все варианты Lempel – Ziv хорошо работают с HTML-подобными языками из-за высокой повторяемости конкретных языковых идиом; Часто цитируемый GZip использует такой алгоритм на основе LZ (я думаю, LZ77).

Идея, возможно, улучшить эти общие алгоритмы состояла бы в том, чтобы заполнить кольцевой буфер LZ-типа наиболее распространенными тегами и шаблонами HTML в целом. Таким образом, мы уменьшим сжатый размер, используя цитаты из самого первого экземпляра такого шаблона. Этот выигрыш будет особенно важен для небольших html-документов.

Дополнительная, аналогичная идея состоит в том, чтобы методы сжатия и распаковки предполагали (то есть не отправляли) информацию для другого алгоритма сжатия алгоритма LZ-x (скажем, дерево Хаффмана в случае LZH и т. Д.), со статистикой, характерной для типичного HTML, стараясь исключить из символов, подсчитайте [статистически взвешенные] экземпляры символа, закодированные с помощью цитирования. Такое отфильтрованное распределение символов, вероятно, станет ближе к обычному английскому (или национальному языку целевых веб-сайтов), чем к полному тексту HTML.


Не относясь к вышеупомянутым [образованным, надеюсь] предположениям, я начал искать в Интернете информацию по этой теме.

'нашел эту научную статью 2008 г. (формат pdf) Пшемыслава Скибинского из Вроцлавского университета. Резюме статьи указывает на 15% улучшение по сравнению с GZIP при сопоставимой скорости сжатия .

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

3
ответ дан 7 December 2019 в 03:14
поделиться

Запустите свой код с помощью некоторого минификатора / обфускатора HTML, который удаляет как можно больше разметки, а затем позвольте вашему веб-серверу сжать его с помощью gzip.

0
ответ дан 7 December 2019 в 03:14
поделиться

Нет, нет никаких алгоритмов сжатия, специфичных для HTML, потому что универсальные алгоритмы оказались адекватными.

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

0
ответ дан 7 December 2019 в 03:14
поделиться

Вместо этого используйте S-выражения, вы сэкономите количество символов на тег :)

1
ответ дан 7 December 2019 в 03:14
поделиться

Обычно используется общий алгоритм, например gzip, который поддерживается большинством браузеров через протокол HTTP. В документации Apache показано, как включить mod_deflate, не нарушая поддержку браузером вашего веб-сайта.

Кроме того, вы можете минимизировать статические файлы HTML (или сделать это динамически).

0
ответ дан 7 December 2019 в 03:14
поделиться

Если я правильно понимаю ваш вопрос, вам нужно сжатие gz, которое довольно легко доступно с Apache.

0
ответ дан 7 December 2019 в 03:14
поделиться

Сжатие gzip недостаточно для ваших нужд? Оно дает вам степень сжатия примерно 10: 1, не только с HTML содержимое, но также с файлами JavaScript, CSS и т. д. и легко доступно на большинстве серверов или обратных прокси (например, Apache mod_deflate , Nginx's NginxHttpGzipModule и т. Д.) И всех современных браузеров (вы можете указать Apache и Nginx пропускать сжатие для определенных браузеров на основе User-Agent .)

Вы удивитесь, насколько близко gzip Сжатие доходит до оптимального. Некоторые люди предлагают минимизировать ваши файлы ; однако, если ваши файлы не содержат большого количества комментариев (которые минификатор может полностью отбросить, то есть то, что вы, вероятно, назвали «с потерями»), но то, что вы, вероятно, не хотите делать с HTML в любом случае, если вы не уверены, что ни один из ваших тегов