Сжатие ресурсов с помощью функций gzip или deflate позволяет сократить объем данных передаваемых по сети: Как убрать ругательства на api-maps.yandex.ru от PageSpeed Insights? — Хабр Q&A

Содержание

**Enable text compression — Chrome Developers

Текстовые ресурсы следует предоставлять в сжатом виде, чтобы свести к минимуму общее количество данных, передаваемых по сети. В разделе Opportunities (Возможности) отчета Lighthouse отображаются все несжатые текстовые ресурсы:

# Как Lighthouse сжимает текст

Lighthouse собирает все ответы, в которых:

  • имеются текстовые ресурсы;
  • нет заголовка content-encoding со значением br , gzip или deflate.

Затем Lighthouse сжимает каждый из ответов с помощью GZIP и вычисляет, как сильно можно уменьшить объем данных.

Если исходный размер ответа меньше 1,4 КиБ либо если после сжатия исходный размер сократится менее чем на 10 %, Lighthouse не помечает этот ответ в результатах.

Сведения о потенциальной экономии, отображаемые в Lighthouse, справедливы только при кодировании ответа с помощью GZIP. Если использовать Brotli, то, возможно, удастся дополнительно уменьшить объем данных.

# Включение функции сжатия текста на сервере

Чтобы успешно пройти этот аудит, включите сжатие текста на серверах, которые передали эти ответы.

Когда браузер запрашивает ресурс, он использует заголовок HTTP-запроса Accept-Encoding, в котором указывает, какие алгоритмы сжатия он поддерживает.

**Accept-Encoding: gzip, compress, br

Если браузер поддерживает Brotli (br), следует использовать Brotli, потому что в этом случае можно уменьшить размер файлов ресурсов еще сильнее, чем при использовании других алгоритмов сжатия. Выполните поиск по ключевым словам how to enable Brotli compression in <X> , где <X> — имя вашего сервера. По состоянию на июнь 2020 г. Brotli поддерживается во всех основных браузерах, кроме Internet Explorer, Safari для компьютеров и Safari для iOS. См. актуальные сведения в разделе Совместимость с браузерами.

Используйте GZIP, когда нельзя использовать Brotli. GZIP поддерживается во всех основных браузерах, но он менее эффективен, чем Brotli. См. примеры в разделе Конфигурации сервера.

Чтобы сообщить, какой алгоритм сжатия используется, сервер должен возвратить заголовок HTTP-ответа Content-Encoding.

**Content-Encoding: br

# Проверка того, был ли сжат ответ, в Chrome DevTools

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

  1. Press Control+Shift+J (or Command+Option+J on Mac) to open DevTools.
  2. Click the Network tab.
  3. Щелкните запрос, на который был получен интересующий вас ответ.
  4. Перейдите на вкладку Headers (Заголовки).
  5. Проверьте заголовок content-encoding в разделе Response Headers (Заголовки ответов).
Заголовок ответа content-encoding

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

  1. Press Control+Shift+J (or Command+Option+J on Mac) to open DevTools.
  2. Click the Network tab.
  3. Включите поддержку больших строк запросов. См. раздел Использование больших строк запросов .
  4. Посмотрите столбец Size (Размер) для интересующего вас ответа. Верхнее значение — размер сжатых данных, нижнее значение — размер несжатых данных.

См. также раздел Уменьшение и сжатие сетевых данных .

# Инструкции для разных стеков

# **Joomla

Включите параметр Gzip Page Compression (Сжатие страницы с помощью Gzip) в разделе System > Global configuration > Server (Система > Глобальная конфигурация > Сервер).

# **WordPress

Включите сжатие текста в разделе конфигурации веб-сервера.

# **Ресурсы

  • Исходный код для аудита функции Enable text compression (Включить сжатие текста)

Внутрення оптимизация сайта — GoldWebIT.

Техническая поддержка сайтов 1C Битрикс

Главная G-Web IT

Адрес: Летная улица, 30, корпус 1 141021 Мытищи,

Электронная почта: [email protected]

По будням с 10:00 до 20

G-Web IT

online-заявка

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

— УСКОРЕНИЕ РАБОТЫ САЙТА

Для того чтобы поисковые роботы могли быстро индексировать сайт необходимо увеличить скорость загрузки страниц.

Задача разделяется на оптимизацию контента(уменьшение веса страницы в kb) и сокращение времени ответа сервера.
В помощь нам приходит сервис от Google PageSpeed Insights.

После процедуры тестирования, вы имеете список рекомендаций от google.ru по вашем запросу. Как правило google выдает большой список правок, но чтоб войти в зеленую зону, необходимо всего набрать более 85 балов, а для этого достаточно реализовать несколько моментов:

  • После анализа сайта, google предоставляем оптимизированные файлы css и js для активной страницы. Скачайте архив, распакуйте и выборочно загрузите файлы на сайт.
  • Включить кэш браузера, можно в файле .htaccess следующим образом
  • Так же гугл зачастую предлагает оптимизировать картинки, если у вас нет встроенного механизма на сайте, то вы можете воспользоваться оптимизированными картинками из архива. От греха подальше необходимо сделать бекап картинок и всех изменяемых файлов, потому что оптимизированные файлы от google могут отличаться и если у вас не правильный синтаксис javascript, оптимизированный файл может вызвать сбой работы страницы.
    Лучше сделать бекап.
  • Еще один важный параметр, это — ответ от сервера, чтобы сократить отклик сервера рекомендую перевести сайт на композит (композитное кэширование), это как правило всегда помогает. Если без Композита, то проверьте настройки кеширования компонента, они всегда должны быть настроены на кеширование ( A ) и оптимизируйте запросы к базе данных. Хорошие показатели считаются когда ответ сервера выдает результат в пределах 0,2 секунды.
  • Включите сжатие в файле .htaccess (cжатие ресурсов с помощью функций gzip или deflate позволяет сократить объем данных, передаваемых по сети.)

Выполнив все выше рекомендации и увидев скорость загрузки по тесту в районе 85%, можно переходить дальше.


— НАСТРОЙКА ИНДЕКСАЦИИ САЙТА ПОИСКОВЫМИ РОБОТАМИ.

Для лучшей индексации правильно будет создать файл sitemap.xml и передать его в яндекс-вебмастер, гугл и другие поисковики. Поисковики на основе sitemap.xml будут проходить по ссылкам, указанным в xml-файле и индексировать соответствующие страницы сайта.
Для того, чтобы роботы не индексировали служебные страницы, а также страницы — результаты фильтра и сортировки, нужно запретить индексацию таких ссылок в файле robots.txt
Кроме того, в robots.txt обязательно указывать host (главное зеркало) и sitemap (ссылка на карту сайта)

— ИСКЛЮЧЕНИЕ ДУБЛЕЙ DESCRIPTION И TITLE НА СТРАНИЦАХ.

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

Для проверки на дубли можно использовать бесплатную программу Netpeak Spider. Простая в настройке, руссифицированнная программа найдет дубликаты, ошибки ответа сервера, ссылки на внешние ресурсы, укажет канонические url, в общем будет полезна.


— НАСТРОЙКА — ИНТЕГРАЦИЯ МИКРОРАЗМЕТКИ.

Для интернет-магазинов в последнее время самой популярный и востребованный является тип микроразметки Schema.org/Product, именно на ее основе в Яндексе строятся структурированные сниппеты с описанием товара и ценой.


— ОПТИМИЗАЦИЯ CSS, HTML ВАЛИДАТОРАМИ КОДА (VALIDATOR.W3.ORG).

При сканировании сайта, поисковый робот может неверно интерпретировать код, поэтому важно, чтобы код был «валидный», т.е проверенный на валидаторе.

— МОБИЛЬНАЯ ВЕРСИЯ САЙТА.

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


Возврат к списку

Как включить сжатие GZIP для ускорения веб-страниц

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

По данным Google, увеличение времени загрузки страницы с одной до трех секунд увеличивает показатель отказов на 32% — это означает, что значительная часть вашей аудитории уходит в другое место из-за небольшого отставания.

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

В этом порте мы обсудим один из краеугольных камней веб-технологии, благодаря которой Интернет работает невероятно быстро: сжатие — в частности, тип сжатия, называемый GZIP .

Вероятно, вы уже сжимали файлы, «архивируя» их. Однако большинство людей не знают, что методы сжатия, такие как GZIP, также играют ключевую роль в отправке миллиардов веб-страниц с серверов пользователям каждый день.

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

Что такое сжатие?

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

Вот почему это относится к вашему веб-сайту: По своей сути веб-сайт представляет собой группу связанных файлов, хранящихся на веб-сервере. Когда вы вводите URL-адрес в свой браузер, ваш браузер отправляет запрос (обычно запрос HTTP GET) на веб-сервер, на котором размещен желаемый контент. Сервер обрабатывает ваш запрос, извлекает нужные файлы из своей базы данных, включая HTML и любые связанные CSS, JavaScript и мультимедийные файлы, а затем отправляет файлы в ваш браузер в качестве ответа HTTP. Наконец, ваш браузер отображает файлы в виде веб-страницы.

Источник изображения

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

Согласно httparchive, средний размер такой передачи данных составляет около 2000 килобайт, что эквивалентно примерно 100 страницам обычного текста. На страницах с большим количеством медиа размер может быть в три-четыре раза больше.

Как же тогда обеспечить скорость интернета? Решение, как вы можете догадаться, заключается в том, что веб-серверы сжимают файлов перед отправкой их в браузеры — они превращают наш 100-страничный текстовый документ в больше похожее на 30-страничное эссе. Причина проста: файлы меньшего размера означают меньше работы, которую серверы и браузеры должны выполнять для их передачи. Как только браузер получает сжатый ответ, он быстро распаковывает содержимое, и мы довольны более быстрым временем загрузки. Сжатие также помогает оптимизировать несколько ключевых показателей производительности, в том числе самую большую отрисовку контента — одну из основных жизненно важных веб-страниц.

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

и

снова и снова, а методы сжатия помогают временно устранить эти повторения и сократить файлы — GZIP является одним из таких методов.

Что такое сжатие GZIP?

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

GZIP — это текущий стандарт сжатия файлов в Интернете. Исследование W3Techs показывает, что более 99% веб-сайтов, которые сжимают свой контент, используют GZIP.

GZIP был представлен в 1992 году и изначально предназначался для использования GNU (отсюда и буква «G» в GZIP) в качестве бесплатной альтернативы с открытым исходным кодом проприетарным методам сжатия того времени. Эта доступность способствовала повсеместному распространению GZIP.

Мы не будем вдаваться в подробности того, как именно GZIP сжимает файлы — по сути, GZIP реализует алгоритм DEFLATE без потерь, который находит и удаляет повторяющиеся символы в текстовых файлах. А пока вам просто нужно знать, почему GZIP часто предпочтительнее аналогичных методов сжатия.

Почему мы используем сжатие GZIP?

GZIP эффективен, но это не единственный метод сжатия. На самом деле, это даже не лучший метод с точки зрения уменьшения размера.

GZIP может уменьшить объем данных до 70%. Неплохо, за исключением того, что тесты, сравнивающие размеры сжатых файлов с использованием различных алгоритмов сжатия, показали, что альтернативные алгоритмы, такие как Brotli, превосходят GZIP для текстовых ресурсов. Если это правда, почему мы до сих пор так сильно полагаемся на GZIP?

Основная причина в том, что GZIP имеет тенденцию быть быстрее , чем сопоставимые методы. Он сжимает файлы в несколько раз быстрее, чем другие методы. Эта скорость имеет решающее значение для передачи данных через Интернет. В конце концов, цель сжатия — ускорить работу веб-сайтов — какой в ​​этом смысл, если само сжатие замедляет работу?

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

Прежде чем мы продолжим, обратите внимание, что сжатие GZIP — это не то же самое, что сжатие ZIP. ZIP — еще один формат сжатия без потерь, который чаще используется для хранения файлов, чем для их передачи.

Как проверить сжатие GZIP

Чтобы передача файлов работала с GZIP, должны произойти две вещи. Во-первых, веб-браузер сообщает веб-серверу, что он может принимать файлы, сжатые GZIP. Это достигается включением HTTP-заголовка Accept-Encoding в запрос браузера:

 
Accept-Encoding: gzip, deflate

Сегодня большинство браузеров включают этот заголовок в запросы по умолчанию.

Во-вторых, веб-сервер обрабатывает этот заголовок и решает либо сжать запрошенные файлы, либо оставить их в покое. Если файлы сжаты с помощью GZIP, сервер включает в свой ответ следующий заголовок:

 
Content-Encoding: gzip

… который сообщает браузеру, что файлы должны быть распакованы методом GZIP.

Если вы хотите, чтобы файлы вашего веб-сайта отправлялись в сжатом виде, вы должны разрешить серверу обрабатывать запросы GZIP. Веб-сервер вашего сайта может иметь или не включать сжатие GZIP по умолчанию, в зависимости от конфигурации вашего сайта. К счастью для нас, это легко проверить, не распаковывая содержимое вашего сервера. Вот несколько способов узнать это:

Онлайн-тест сжатия GZIP

Многие бесплатные веб-сайты подтвердят, включен ли GZIP — просто вставьте URL-адрес веб-страницы и посмотрите результаты. Некоторые веб-сайты также предоставляют краткий отчет, объясняющий, насколько GZIP уменьшил размер файла:

Источник изображения

Онлайн-тест скорости

Многие бесплатные тесты скорости, такие как Google PageSpeed ​​Insights и Pingdom, содержат рекомендацию использовать GZIP для определенных файлов, если это необходимо. Вот предупреждение от инструмента Google PageSpeed ​​Insights:

Источник изображения

Проверьте заголовок HTTP в инструментах разработчика

Чтобы проверить сжатие GZIP без внешнего инструмента, вы можете использовать панель инструментов разработчика в своем браузере. Большинство браузеров позволяют таким образом проверять элементы страницы и просматривать информацию о производительности.

Сначала загрузите веб-страницу, которую хотите проверить, в браузере. Затем откройте панель инструментов разработчика и выберите вкладку Network . Вы увидите список всех ресурсов, отправленных веб-сервером (если нет, вам может потребоваться перезагрузить страницу). Щелкните один ресурс, чтобы просмотреть его содержимое. Убедитесь, что выбрана вкладка Headers , затем прокрутите вниз до заголовка content-encoding , чтобы увидеть, какой метод использовался.

Вот как выглядит ресурс, сжатый с помощью GZIP, с помощью Chrome Developer Tools:

Как включить сжатие GZIP

Поскольку сжатие GZIP происходит на веб-сервере, процесс настройки будет зависеть от вашего хостинг-провайдера и архитектуры сервера.

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

Если у вас есть это разрешение, вот несколько решений для распространенных настроек веб-сервера:

Как включить сжатие GZIP на веб-сервере Apache

Те, у кого есть веб-сайты на серверах Apache, могут включить сжатие GZIP через файл .htaccess, который управляет различными разрешениями сервера. Add the following code to your .htaccess file, then save the file:

  

         AddOutputFilterByType DEFLATE application/javascript
         AddOutputFilterByType DEFLATE application/rss+xml
         AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
         AddOutputFilterByType DEFLATE application/x-font
         AddOutputFilterByType DEFLATE application/x-font-opentype
         AddOutputFilterByType DEFLATE application/x-font-otf
         AddOutputFilterByType DEFLATE application/x-font-truetype
         AddOutputFilterByType DEFLATE application/x-font-ttf
         AddOutputFilterByType DEFLATE application/x-javascript
         AddOutputFilterByType DEFLATE application/xhtml+xml
         AddOutputFilterByType DEFLATE application/xml
         AddOutputFilterByType DEFLATE font/opentype
         AddOutputFilterByType DEFLATE font/otf
         AddOutputFilterByType DEFLATE font/ttf
         AddOutputFilterByType DEFLATE image/svg+xml
         AddOutputFilterByType DEFLATE image/x-icon
         AddOutputFilterByType DEFLATE text/css
         AddOutputFilterByType DEFLATE text/html
         AddOutputFilterByType DEFLATE text /javascript
         AddOutputFilterByType DEFLATE text/plain
          AddOutputFilterByType DEFLATE text/xml

При этом будут сжаты все файлы HTML, CSS, JavaScript, XML и файлы шрифтов. После сохранения проверьте сжатие любым из методов, описанных в предыдущем разделе.

Как включить сжатие GZIP на веб-сервере NGINX

Программное обеспечение сервера NGINX по умолчанию сжимает только файлы HTML. Если ваш сервер использует NGINX, вы можете включить сжатие GZIP для файлов вашего сайта, открыв файл nginx.conf и найдя следующую строку:

 
gzip включен;

Непосредственно под этой строкой вставьте следующий код:

 
gzip_vary on;
gzip_types текст/обычный текст/текст css/текст xml/приложение javascript/приложение x-javascript/xml;
gzip_min_length 1000;
gzip_proxied без кэша без хранилища частная авторизация с истекшим сроком действия;

Затем сохраните файл и перезагрузите конфигурацию NGINX перед тестированием сжатия.

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

Как включить сжатие GZIP в WordPress

WordPress — это программное обеспечение CMS, а не конфигурация сервера. Однако, если вы используете веб-сайт WordPress, вы можете установить плагин производительности, который изменяет файлы сервера для вас. Это возможно с помощью пакетов оптимизации производительности, таких как WP Super Cache, WP Rocket или PageSpeed ​​Ninja. Также есть параметр «Включить сжатие Gzip», который делает именно то, что следует из названия на серверах Apache.

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

Compress to Impress

Помните, что цель всей этой технической беседы состоит в том, чтобы предоставить вашим посетителям наилучшее взаимодействие с пользователем за счет предоставления максимально быстрых страниц. «Ускорение сайта» может показаться черным ящиком, если вы не знакомы с тем, что на самом деле определяет скорость страницы.

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

 

Что такое сжатие HTTP? | Avi Networks

<< Вернуться к техническому словарю

Определение HTTP-сжатия

HTTP-сжатие может повысить производительность веб-сайта. Уменьшение размера до 70 процентов в зависимости от документа снижает потребность в пропускной способности. Со временем серверы и клиенты поддерживают новые алгоритмы, а существующие алгоритмы становятся более эффективными.

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

Существует три различных уровня сжатия HTTP:

  • Определенные оптимизированные методы сжатия некоторых форматов файлов;
  • Система шифрует и передает ресурс, сжатый из конца в конец на уровне HTTP;
  • Система может определить сжатие между двумя узлами на уровне соединения HTTP.

Сжатие формата файла

Каждому типу данных присуще некоторое неиспользуемое пространство или избыточность. Типичные показатели избыточности для текста колеблются на уровне 60 процентов, с гораздо более высокими показателями для видео, аудио и других типов мультимедиа. В отличие от текста, потребность в восстановлении пространства и оптимизации хранения стала очевидной очень рано для этих различных типов носителей, которые используют большие объемы пространства для хранения данных. Именно по этой причине инженеры разработали оптимизированный алгоритм сжатия, используемый форматами файлов.

Существует два основных типа алгоритмов сжатия файлов, без потерь и с потерями:

  • Цикл сжатия-распаковки без потерь соответствует исходному байту за байтом и не изменяет восстановленные данные. Изображения PNG и GIF используют сжатие без потерь.
  • Цикл сжатия с потерями изменяет исходные данные для пользователя таким образом, что это в идеале незаметно. Форматы JPEG и видео онлайн имеют потери.
  • Некоторые форматы, например WebP, можно использовать как для сжатия без потерь, так и для сжатия с потерями. Алгоритмы с потерями обычно можно настроить на более высокое или более низкое качество, поскольку они сжимают больше или меньше. Для идеальной производительности сайта сбалансируйте максимальное сжатие с желаемым уровнем качества.

Алгоритмы сжатия с потерями, как правило, более эффективны, чем алгоритмы без потерь.

Сквозное сжатие

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

Пошаговое сжатие

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

Часто задаваемые вопросы

Что такое сжатие HTTP?

Можно повысить производительность любого сетевого приложения за счет сокращения времени передачи данных с сервера на клиент. Есть два способа сократить время загрузки страницы: 

  • Уменьшить частоту использования сервером управления кешем и отправки данных;
  • Использование сжатия HTTP для уменьшения размера передаваемых данных.

Как это ни звучит, прежде чем файл будет передан клиенту, сжатие HTTP уменьшает его размер на сервере, сокращая время загрузки страницы и ускоряя передачу файлов. Существует две основные категории сжатия: без потерь и с потерями.

Сжатие с потерями создает суррогатные данные, поэтому обратный процесс с распаковкой с потерями не позволяет получить исходные данные. В зависимости от качества алгоритма сжатия суррогат более или менее похож на оригинал. В браузерах этот метод в основном используется с форматами файлов изображений JPEG, видео MPEG и аудиофайлов MP3, которые более терпимы к упущенным деталям с точки зрения восприятия человеком. Полученная в результате экономия размера данных значительна.

Напротив, распаковка без потерь приводит к идентичной побайтовой копии исходных данных. Многие форматы веб-файлов на веб-платформе используют сжатие без потерь, как внутри, так и на уровне HTTP для текстов. Некоторые соответствующие форматы файлов для сжатия без потерь включают GIF, PDF, PNG, SWF и WOFF.

Чтобы повысить производительность Интернета, активируйте сжатие для всех файлов, кроме уже сжатых. Попытка активировать HTTP-сжатие для уже сжатых файлов, таких как GIF или ZIP, может оказаться непродуктивной, привести к потере времени сервера и даже увеличить размер ответного сообщения.

И клиент, и сервер должны обмениваться информацией о поддержке и использовании любых форматов сжатия для правильной распаковки файлов. Наиболее часто используемые форматы сжатия тела HTTP — Brotli (br), Gzip и DEFLATE, но мы обсудим больше форматов и алгоритмов ниже.

Клиент уточняет, какую кодировку контента он может понять, в заголовке Accept-Encoding или заголовке сжатия HTTP-запроса Accept-Encoding. Сервер отвечает HTTP-заголовком ответа Content-Encoding, который указывает, какой алгоритм сжатия использовался.

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

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

Советы и рекомендации по сжатию HTTP

Вот несколько советов и рекомендаций по сжатию HTTP.

Кодирование содержимого Gzip vs DEFLATE

Легко обсуждать HTTP-сжатие, как будто это монолитная функция, но на самом деле HTTP определяет, как веб-клиент и сервер могут договориться об использовании схемы сжатия в Accept- Заголовки кодирования и заголовки Content-Encoding для передачи контента. Наиболее часто используемыми форматами сжатия тела HTTP являются Brotli (br), Gzip и DEFLATE, причем DEFLATE и Gzip в основном доминируют на сцене.

Свободный от патента алгоритм DEFLATE для сжатия данных без потерь сочетает в себе кодировку Хаффмана и алгоритм LZ77 и описан в RFC 1951. DEFLATE прост в реализации и эффективно сжимает многие типы данных.

Существует множество реализаций DEFLATE с открытым исходным кодом, причем zlib является стандартной библиотекой реализации, которую использует большинство людей. Zlib предоставляет:

  • функции сжатия и распаковки данных с использованием DEFLATE/INFLATE
  • формат данных zlib, который упаковывает сжатые данные DEFLATE с контрольной суммой и заголовком

Другой библиотекой сжатия, которая использует DEFLATE для сжатия данных, является Gzip. Точнее, большинство реализаций сжатия Gzip используют внутреннюю библиотеку zlib для DEFLATE или INFLATE. Это приводит к уникальному формату данных Gzip, также называемому Gzip, который упаковывает сжатые данные DEFLATE с контрольной суммой и заголовком.

Из-за ранних проблем с DEFLATE некоторые пользователи предпочитают использовать только Gzip.

HPACK

Как правило, заголовки HTTP не сжимаются, поскольку сжатие на основе кодирования содержимого HTTP применяется только к телу ответа. Это оставляет значительную слабость в плане сжатия HTTP. В связи с этим кодирование содержимого необычно влияет на тело запроса.

Сжатие заголовков HTTP 2 было введено с протоколом HTTP/2 в форме HPACK. HPACK был разработан для противодействия атакам, использующим протокол SPDY, таким как эксплойт CRIME, но он ограничен тем, что эффективно работает только в том случае, если заголовок не меняется от сообщения к сообщению. До HPACK в попытках сжатия заголовков использовался Gzip, но такая реализация приводила к нарушениям безопасности, что делало ее уязвимой для атак. HTTP/2 черновая версия 14 включает HPACK, но часто лучше использовать кодирование содержимого, поскольку черновая версия 12 убрала покадровое сжатие Gzip для данных.

Сжатие тела запроса

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

Самое главное, клиент не может узнать, принимает ли сервер сжатые запросы, а многие этого не делают. Напротив, сервер может проверить заголовок запроса accept-encoding, чтобы определить, принимает ли клиент сжатую версию ответов.

В результате HTML-формы пока не позволяют авторам сжимать тело запроса.

Современные веб-приложения могут использовать сценарии в API-интерфейсах браузера в качестве обходного пути:

  1. Загрузить файл с помощью HTML5 File API для загрузки в JavaScript
  2. Используйте механизм сжатия на основе сценариев для сжатия файла
  3. Загрузить сжатый файл на сервер

Компрессионные бомбы

Серверы могут опасаться поддержки сжатых загрузок из-за «компрессионных бомб». Это просто относится к пиковому коэффициенту сжатия алгоритма DEFLATE, который приближается к 1032 к 1. Это означает, что загрузка одного мегабайта может быстро превратиться в гигабайтный взрыв для сервера. Эти атаки наиболее эффективны против серверов, которым требуется один ЦП для одновременного обслуживания тысяч пользователей, по сравнению с клиентскими приложениями, такими как браузеры.

Как и любая другая вредоносная деятельность, защита от такого рода созданных потоков сжатия требует тщательного планирования и дополнительных усилий при реализации.

Рекомендация: Сократить, затем сжать

Минификация — это удаление всех ненужных символов из исходного кода без изменения его функциональности. Минимизация ваших скриптов перед сжатием является важным первым шагом, потому что после распаковки файлы по-прежнему используют всю исходную память, которая им требуется. Это также относится к типам файлов изображений. Минификация экономит память на клиенте, на мобильных устройствах с ограниченным объемом памяти и в системе.

Проблемы и преимущества HTTP-сжатия

HTTP-сжатие — относительно простая функция HTTP, однако существует несколько проблем, которые необходимо решить, чтобы обеспечить ее правильное использование:

  1. Сжатие только сжимаемого контента
  2. Выбор правильной схемы сжатия для ваших посетителей
  3. Правильная настройка веб-сервера для отправки сжатого содержимого поддерживающим клиентам
  4. Поддержание безопасности сжатия HTTP

Сжатие только сжимаемого содержимого

Включить сжатие ответов HTTP только для содержимого, которое еще не сжато изначально. Это не ограничивается текстовыми ресурсами, такими как CSS, HTML и JavaScript, хотя, поскольку они не являются изначально сжатыми форматами файлов, их, безусловно, следует сжимать. Но фокусироваться исключительно на этих трех типах файлов недальновидно.

Другие распространенные типы текстовых веб-ресурсов, которые должны подвергаться HTTP-сжатию, включают:

  • компоненты HTML CSS (файлы HTC). Файлы HTC — это собственная функция Internet Explorer, которая объединяет код, разметку и информацию о стилях для поведения CSS и используется в исправлениях или для поддержки дополнительных функций.
  • ICO-файлы. Файлы ICO часто используются в качестве фавиконов, но, как и изображения BMP, они изначально не сжаты.
  • JSON. Подмножество JavaScript, JSON используется для вызовов API в качестве оболочки формата данных.
  • Ленты новостей. И Atom, и RSS-каналы являются XML-документами (см. ниже).
  • Обычный текст. Все простые текстовые файлы должны быть сжаты, и они бывают разных форм, например файлы LICENSE, Markdown и README.
  • Robots.txt. Robots.txt представляет собой серьезную возможность включить сжатие HTTP, поскольку он может потреблять огромную полосу пропускания без ведома пользователей-людей и становиться очень большим, поскольку к нему неоднократно обращаются сканеры поисковых систем. Этот специальный текстовый файл сообщает поисковым системам, где сканировать веб-сайты. Поскольку файл robots.txt не отображается в журналах веб-аналитики на основе JavaScript и обычно не используется людьми, о нем часто забывают.
  • SVG-изображения. Подавать файлы SVG со сжатием HTTP. Изображения SVG — это просто XML-документы, но они изначально не сжаты, а поскольку они имеют другое расширение файла и тип MIME, легко запомнить сжатие XML-документов и забыть об изображениях SVG. Также легко непреднамеренно разместить изображения SVG на веб-сайте.
  • XML. XML — это структурированный текст, используемый для вызовов API в качестве оболочки формата данных или в отдельных файлах, таких как sitemap.xml от Google или crossdomain.xml от Flash.

Избегайте использования HTTP-сжатия для содержимого, сжатого в собственном формате, по двум причинам. Во-первых, существуют затраты на использование схем сжатия данных HTTP. Если нет достижимого сжатия, это напрасная работа процессора.

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

Затем проверьте, как настроен ваш веб-сервер для сжатия содержимого. Большинство браузеров позволяют пользователям указывать либо список типов MIME, либо список расширений файлов для сжатия, либо и то, и другое. Просмотрите этот список и тщательно настройте сервер на основе того, что вы найдете. Убедитесь, что такая ошибка, как отсутствие объявления типа MIME или расширения файла, не приведет к утечке несжатого содержимого.

Подводя итог:

  • Обязательно обслуживайте весь контент, не сжатый исходным способом, с использованием HTTP-сжатия
  • Никогда не тратьте циклы ЦП, время загрузки и полосу пропускания на сжатие уже сжатого содержимого
  • Обеспечьте совместимость, придерживаясь Gzip
  • Убедитесь, что параметры сжатия HTTP соответствуют содержимому и структуре приложения, отраженным в коде и конфигурации сервера
  • Проверка работоспособности конфигурации с помощью инструментов

Предлагает ли Avi HTTP-сжатие?

Да.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *