HTTP-сжатие – это встроенная возможность большинства современных веб-серверов и клиентов. Она позволяет уменьшить размер данных или количество передаваемых данных. В свою очередь, такое сжатие требует гораздо меньшей пропускной способности и повышает производительность веб-сайтов. Алгоритмы сжатия обеспечивают до 80% сжатия для некоторых документов. Brotli и gzip – два наиболее популярных алгоритма сжатия, используемых сегодня. Алгоритм сжатия gzip используется по умолчанию на большинстве веб-серверов, что делает его более простым в использовании. Однако Brotli может предложить лучшую производительность в зависимости от конкретного случая использования. Давайте сравним эти алгоритмы сжатия и узнаем, чем они отличаются друг от друга.
Определить алгоритм сжатия
Вы можете проверить, какой алгоритм сжатия используется в вашем браузере, открыв инструменты разработчика. Нажмите на файлы в разделе Сеть. Если сайт использует Cloudflare или другую CDN, он может не отображать алгоритм сжатия.
Другой способ, который можно использовать, – это команда curl
.
curl -s -I -H "Accept-Encoding: gzip, deflate, br" https://example.com
Конечно, вы должны заменить домен example.com на тестируемый сайт.
Gzip
Gzip основан на алгоритме deflate. Для сжатия данных он использует алгоритмы LZ77 и Huffman coding без потерь.
Алгоритм сжатия gzip обеспечивает 60-70%-ное сокращение веб-контента. Он включает в себя HTML, CSS и Javascript, а также обеспечивает быструю декомпрессию. Он широко поддерживается основными веб-браузерами и является методом по умолчанию на веб-серверах.
Для сжатия данных gzip выявляет повторяющиеся последовательности и сохраняет ссылку на первое вхождение. Последующие вхождения он заменяет указателями на этот первоначальный экземпляр, вместо того чтобы хранить одни и те же данные несколько раз. Для этого сжатия используется LZ77. Затем с помощью кодирования Хаффмана он представляет часто встречающиеся символы. Он комбинирует более короткие двоичные коды и менее частые символы с более длинными кодами для дальнейшего сжатия данных.
Brotli
Brotli использует вариант алгоритма LZ77 в сочетании с кодированием Хаффмана и сжатием на основе словаря. В его словарь входят распространенные строки и фразы, встречающиеся в веб-контенте. Это делает его особенно эффективным для сжатия небольших файлов, таких как HTML и CSS. Brotli имеет лучшую степень сжатия по сравнению с gzip, предлагая более высокую степень сжатия.
Brotli также поддерживается основными веб-браузерами и CDN, такими как Cloudflare.
Сравните gzip и Brotli
Сравним gzip и Brotli и найдем различия в обоих алгоритмах сжатия.
- Высокий коэффициент сжатия: Brotli часто достигает степени сжатия на 15-25% выше, чем gzip. Это делает его идеальным для веб-активов, где уменьшение размера имеет решающее значение для ускорения загрузки.
- Скорость декомпрессии: Brotli может быть немного медленнее, чем gzip, но все равно работает быстро и поддерживается современными браузерами.
Brotli обеспечивает лучшее сжатие, но требует больше процессорного времени и ресурсов для сжатия файлов. Для статического контента (файлов, которые не меняются часто) более низкая скорость сжатия Brotli может не быть проблемой. Такие файлы можно сжать один раз и многократно обслуживать из кэша. Для динамического контента более медленное сжатие Brotlis может привести к перерасходу производительности, если не реализовано надлежащее кэширование.
Уровни сжатия
И Brotli, и gzip предлагают несколько уровней сжатия:
- Gzip: от 1 (самое быстрое, наименьшее сжатие) до 9 (самое медленное, наилучшее сжатие).
- Brotli: от 0 (без сжатия) до 11 (наилучшее сжатие).
При максимальном уровне сжатия (Brotli 11 и gzip 9): Brotli может значительно превзойти gzip по уменьшению размера файла. Однако сжатие может занять гораздо больше времени. Однако при более низких уровнях (Brotli 1-4 и gzip 1-4) Brotli все еще часто превосходит gzip, сохраняя при этом более высокую скорость.
Когда использовать Brotli против gzip?
Это зависит от типа контента, который вы обслуживаете, и содержания этих веб-файлов. Для достижения наилучшей производительности вам может потребоваться тестирование, чтобы убедиться, что вы выбрали наилучший алгоритм сжатия для вашего случая использования.
Когда использовать gzip?
- Динамическое содержимое: Для содержимого, которое часто меняется, gzip может быть лучшим выбором из-за более высокой скорости сжатия. Сюда можно отнести страницы, созданные пользователями, или API.
- Совместимость: Если вы имеете дело с устаревшими системами или браузерами, gzip по-прежнему поддерживается более широко, чем Brotli.
- Сжатие на лету Поскольку gzip быстро сжимает данные, он полезен, когда вам нужно сжатие в реальном времени для каждого запроса.
Когда использовать Brotli?
- Статические активы: Brotli идеально подходит для статического контента, такого как CSS, JavaScript и HTML-файлы. Их можно сжать один раз и кэшировать для повторного использования. Более низкая скорость сжатия не имеет значения, так как эти файлы не будут часто пересжиматься.
- Большая степень сжатия: Если вы оптимизируете работу с медленными соединениями или мобильными пользователями, Brotli может быть очень полезен.
- Современные браузеры: Brotli поддерживается всеми основными современными браузерами. Это безопасный выбор для сайтов, ориентированных на современную аудиторию.
Заключение
Brotli предлагает более высокую степень сжатия, чем gzip, что часто делает его лучшим выбором, но для динамического контента и сжатия на лету Gzip все равно быстрее. Вам может понадобиться проверить, какую степень сжатия использовать для оптимизации производительности вашего сайта.
Если вам понравился этот пост о различиях между Brotli и Gzip для ускорения вашего сайта, пожалуйста, поделитесь им со своими друзьями в социальных сетях или оставьте комментарий в разделе комментариев.
Комментарии (0)