http/1.1 и http/2: что это, чем отличаются, преимущества и как подключить протокол
HTTP/1.1 (HTTP, HyperText Transfer Protocol) – это сетевой протокол верхнего уровня для передачи данных в виде гипертекстовых документов в формате HTML и произвольных данных. С помощью данного протокола браузер принимает данные от серверов, а затем показывает их в читабельном и эстетичном для пользователей виде. Также сервер посредством HTTP браузер посылает серверу пользовательские данные.
HTTP/2 (HTTP/2.0) – вторая масштабная версия сетевого протокола HTTP, созданная на базе протокола прикладного уровня SPDY для доступа к Всемирной паутине.
История перехода от HTTP к HTTP/2
Впервые протокол HyperText Transfer Protocol описали в 1991 году. До выхода в июне месяце 1999 года версии 1.1 были также выпущены версии HTTP/0.9 и 1.0. Но протокол 1.1 работает и по сегодняшний день.
В 1990-е годы веб-ресурсы были далеки от современных сайтов. Тогда они «весили» не так много и на их содержание не требовались большие мощности. В среднем одна лишь главная страница современного веб-ресурса весит около 2 мегабайт, потому что появились качественные изображения, скрипты JAVA, CSS, flash анимации и прочие элементы.
И когда внедрялись новые технологии, протоколу становилось все тяжелее справляться со страницами с «тяжелыми» материалами, что привело к их медленной загрузке. Выйти из этой ситуации решили двумя способами:
- Внедрить несколько современных техник улучшения производительности сайта.
- Усовершенствовать протокол HTTP для ускорения загрузки документов.
О первом глобальном реформировании HTTP заговорили инженеры компании Google в 2009 году. Они предложили протокол SPDY, использование которого способствовало более быстрой работе ресурсов и приложений за счет модификации устаревших элементов приема и отправки данных.
Для нормального функционирования SPDY необходимо обеспечить поддержку клиента и сервера. Разработчики поискового гиганта внедрили специальные модули для серверов Nginx (ngx http spdy module) и Apache (mod spdy). Адаптирован протокол почти под все популярные браузеры.
А спустя 6 лет, в 2015 году, было объявлено о реализации новой версии HTTP/2, работа которого во многом отталкивается от принципов SPDY. Создана современная версия протокола группой разработчиков Hypertext Transfer Protocol working group. В мае месяце того же года спецификацию нового протокола опубликовали как RFC 7540.
HTTP/2 совместим с предыдущей версией протокола и имеет некоторые схожести. А все нововведения, касающиеся решения проблем с низкой производительностью и увеличением скорости работы сайтов, базируются на ранее выпущенном SPDY.
Цели перехода на http/2
Новый протокол разработан для существенного улучшения работы веб-сайтов. Переход на http/2 имеет смысл, потому что он обладает рядом преимуществ:
- Добавлены новые методы согласования протокола. Как клиент, так и сервер имеют возможность пользоваться первой, второй версией HTTP и совершенно другими протоколами.
- Поддержка совместимости с большим количеством функций HTTP 1.1. К примеру, совместимость по виду URI, изобилию заголовков, набору методов доступа (POST, GET и т.д.), статусным кодам.
- Ускорение загрузки документов. Обеспечивается за счет сжатия HTTP-заголовков, конвейеризации запросов, применении push-технологий на сервере, устранении блокировки начала строки в протоколах 1.0 и 1.1, а также мультиплексировании нескольких запросов лишь в одном соединении.
- Сохранение совместимости с площадками, где внедрен HTTP. Это полные и мобильные версии браузеров, многие интерфейсы и сервера, в числе которых прокси-сервера.
Поясню подробнее суть основных нововведений, благодаря которым http/2 совершеннее чем http 1.1.
Мультиплексирование

Один из основных плюсов второй версии HTTP. В предыдущей версии для одного запроса была необходима установка отдельного TCP-соединения. И чем больше было запросов, тем медленней работал браузер. Благодаря мультиплексированию браузер отправляет сразу несколько запросов через одно TCP-соединение.
Современные браузеры задействуют ограниченное число TCP-соединений, что не позволяет им быстро загружать «тяжелые» страницы. А http/2, где внедрена технология мультиплексирования, дает возможность загружать большое количество статического контента одновременно, существенно повышая производительность.
Приоритезация
Еще одна новинка от второй версии протокола, позволяющая назначить приоритет для любого запроса, основывающийся на весе или зависимостях.
Первый вид приоритезации подразумевает получение потоком определенного веса, который дальше распределялся между потоками, чтобы нагрузка была равномерной. Данный тип выбора приоритета впервые был применен в протоколе SPDY.
Второй вариант является основным для http/2, а его суть заключается в том, что браузер запрашивает у сервера отдельную загрузку некоторых элементов контента, к примеру, сначала скриптов JavaScript, а затем изображений.
Приоритезация в протоколе не обязательна, но рекомендована, потому что мультиплексирование не способно полноценно работать без приоритетов. Чревато это медленной загрузкой, даже хуже, чем в http 1.1 версии. Ресурсы вторичного приоритета, занимая полосу, негативно скажутся на производительности.
Сжатие заголовков HTTP
Сегодня контент страниц включает в себя изобилие «отягощающих» элементов: CSS-файлы, скрипты JS, медиа-файлы и прочие. Делая запрос на загрузку контента браузер отсылает HTTP-заголовок. Аналогично поступает и сервер, добавляя заголовок к загружаемым элементам, что приводит к чрезмерным перегрузкам.
Отличия http 1.1 и http/2
HTTP/2 стал первым бинарным протоколом. Если сравнивать его с прошлой версией протокола, то здесь разработчики поменяли методы распределения данных на фрагменты и их отправку от сервера к пользователю и наоборот. Новая версия протокола позволяет серверам доставлять информацию, которую клиент пока что не запросил. Это было внедрено с той целью, чтобы сервер сразу же отправлял браузеру для отображения документов дополнительные файлы и избавлял его от необходимости анализировать страницу и самостоятельно запрашивать недостающие файлы.
Еще одно отличие http 2.0 от версии 1.1 – мультиплексирование запросов и ответов для решения проблемы блокировки начала строки, присущей HTTP 1.1. Еще в новом протоколе можно сжимать HTTP заголовки и вводить приоритеты для запросов.
HTTP/2 работает быстрее?
Эксперты сервиса HttpWatch организовали несколько тестирований, в ходе которых было установлено, что вторая версия протокола существенно ускорила работу сайтов.
На первом скриншоте вы видите скорость загрузки страницы посредством протокола http/1.1:

А вот результаты тестирований загрузки документа при помощи HTTP/2:

Результат налицо – страница загрузилась на 23% быстрее, чем в первом случае. Специалисты уверяют, что технология будет дорабатываться и они смогут достичь ускорения практически на 30%.
Зимой 2016 года проводилось еще несколько исследований ускорения ресурсов после их перевода на протокол http/2. По результатам тестирования нескольких оптимизированных сайтов установлено, что у пользователей они стали загружаться на 13-18% быстрее, чем во время использования http 1.1.
Но есть и эксперименты, противоречащие таким впечатляющим результатам. Так, на сайте habr.com был опубликован эксперимент специалистов Яндекс.Почта и сервера Nginx. Оговорюсь, что исследовался SPDY, но по используемым технологиям он очень похож на HTTP/2.
Команда Яндекса установила, что у большинства их пользователей скорость загрузки в среднем увеличилась лишь на половину процента. Но плюсы от внедрения SPDY эксперты почтового сервиса поисковика все же отметили. Из-за уменьшения количества соединений с серверами, чем и характерны протоколы http/2 и SPDY, существенно уменьшилась и нагрузка на них.
Отношение поисковых систем к http/2
В отличие от протокола SPDY, где соединение между сервером и пользователем необходимо в обязательном порядке шифровать посредством HTTPS, при использовании второй версии HTTP такой необходимости нет. Однако разработчики браузеров придумали, как заставить клиентов использовать защищенный протокол – они реализовали протокол только для TLS. В связи с этим все, кто желает перейти на http/2, обязаны первым делом начать пользоваться https.
Да и это не единственная причина, по которой нужно прибегать к безопасному соединению. Если ваш сайт использует обычный HTTP протокол, он не сможет подняться на высокие позиции в результатах выдачи в Google, так как для поисковой системы наличие HTTPS протокола – один из факторов ранжирования. Браузеры уже помечают для пользователей сайты без TLS-соединения «небезопасными».
На заметку. Без защищенного соединения вы не сможете воспользоваться огромным количеством функций HTML5, такими как геолокация.
С 19 декабря 2016 года компания Google заявила, что их основной робот поддерживает HTTP/2 – это явный признак того, что поисковик хорошо относится к протоколу. Аналитик команды Google Джон Мюллер лично подтвердил, что использование нового протокола будет поощряться хорошим ранжированием сайтов, переведенных на него, так как он ускоряет их работу.
Да, поддержка современного протокола на сайте не влияет непосредственно на его позиции в поисковой выдаче. Но так как скорость загрузки страниц является значительным критерием ранжирования, то HTTP/2 непременно поможет в SEO-продвижении. И если ускорить работу сайта, то обязательно улучшатся показатели поведенческих факторов, что и приведет к положительному ранжированию.
У быстро загружающихся страниц куда меньше отказов, чем у «медленных», потому что посетителю удобнее на нормально работающей странице изучать контент и совершать какие-либо действия.
Какие браузеры поддерживают http/2
Все известные браузеры стали поддерживать новый протокол с 2015 года, некоторые подключились с 2014 года:
- Google Chrome и другие браузеры на базе Chromium/Blink поддерживают режим протокола с TLS-соединением.
- Chrome для устройств на платформе Android и iOS.
- Firefox начиная с версии 36, а также для Android. В версии 34 была экспериментальная поддержка протокола. Сегодня поддерживается режим http/2 с TLS.
- Internet Explorer начиная с версии 11, только для Windows 8.1 и только режим поверх TLS.
- Opera на базе Chromium/Blink, для Android;
- Safari 9;
- Microsoft Edge.
Как подключить http/2
Если вы не знаете, переходить на протокол HTTP/2.0 или нет, просмотрите логи посещаемости вашего сайта. Наверняка большинство пользователей уже пользуются браузерами, поддерживающими новый протокол.
Нужно брать во внимание еще и особенности вашего сайта. Если у вас большой мобильный трафик, значит переводить ресурс на http/2 нужно немедленно, потому что на мобильных устройствах его преимущества проявляются более выражено. Но обязательно посмотрите, с каких именно браузеров на сайт заходят пользователи со смартфонов или планшетов. Многие старые браузеры не поддерживают протокол.
Для подключения HTTP/2 нет необходимости вносить какие-либо изменения непосредственно на ресурсе. URL страниц, ссылки, разметки, данные для Яндекс.Вебмастера и Google Search Console – все остается без изменений.
Протокол подключается на отдающем данные сервере, то есть, сервере хостера. Если у вас внешний хостинг, скорее всего страницы сайта передаются на http/2 для всех браузеров.
В случае с собственным виртуальным или выделенным сервером, поддержку протокола необходимо внедрить на уровне модуля к серверу Nginx или Apache.
Nginx
Протокол поддерживается в версиях сервера от 1.9.5 и новее, так что обязательно обновите устаревший Nginx. Далее запустите файл, расположенный по пути /etc/nginx/nginx.conf. Найдите секцию Сервер со строкой:
listen 443 ssl
Поменяйте ее на
listen 443 ssl http2
Сохраните изменения и перезапустите сервер при помощи команды:
$ sudo service nginx reload
Apache
Для подключения протокола http/2 вам понадобится версия сервера от 2.4.17 и новее. Если у вас устаревшая версия Apache, обновите его и подключите mod http2.
Затем откройте файл apache.conf и добавьте в него следующие команды:
# for a https server
Protocols h2 http/1.1
#for a http server
Protoсols h2c http/1.1
Далее остается лишь перезапустить сервер. Все готово.
Если вы хотите проверить, поддерживается ли HTTP/2, скачайте специальное расширение для Chrome или Firefox. Можно воспользоваться и сервисом проверки скорости Айри. Если протокол поддерживается, в результатах проверки отобразится соответствующая зелена надпись.
Преимущество http/2 для разработчиков
Современный протокол избавляет разработчиков от большого количества устаревших мероприятий, к которым ранее им приходилось прибегать для ускорения загрузки документов:
- Доменное шардирование. Раньше в http/1.1 число открытых соединений было ограничено. Но можно было установить большое количество соединений за счет загрузки файлов сразу с нескольких поддоменов, чтобы ускорить работу. Такой подход был особенно актуальным для сайтов, куда загружено множество изображений. Теперь благодаря HTTP/2 нет нужды прибегать к домен-шардингу, потому что протокол дает возможность запросить неограниченное количество ресурсов. Тем более, что с новым протоколом доменное шардирование не только не повысит производительность, но и нагрузит сервер лишними соединениями.
- Объединение скриптов Java и CSS. Процедура заключается в том, чтобы из множества маленьких файлов создать один большой. Это конечно уменьшает число запросов, но пользователь, посетив страницу, загрузит абсолютно все CSS и JS файлы, даже те, которые ему не понадобятся. Соответственно объединение файлов съедает память. Еще одна трудность – все элементы нуждаются в одновременной чистке из кэша, так как недопустимо, чтобы дата окончания срока действия каждого из них разнилась. Если поменять даже одну строку в CSS, срок действия закончится у всех элементов одновременно. HTTP/2 позволяет не прибегать к объединению файлов, потому что он не затрачивает много ресурсов.
- Объединение картинок (спрайты). Тоже снижает количество запросов, но так как вес изображения увеличится, загружаться он будет дольше. Более того, для показа хотя бы одной картинки нужно загрузить весь спрайт. Вывод – применение спрайтов чревато занятием больших объемов памяти.
- Доменные имена без cookie. Подразумевает загрузку изображений, JS и CSS файлов с другого домена, где нет данных cookie.
- Перенос JavaScript, CSS, картинок в HTML-файл. Аналогично уменьшает количество соединений, но страница не отобразится до полной загрузки всего файла.
Заключение
Благодаря переходу с протокола HTTP 1.1 на протокол HTTP/2 веб-сайты стали работать значительно быстрее за счет нескольких факторов:
- возможность отправлять несколько запросов с помощью одного TCP-соединения;
- задавания клиентом важности потоков, то есть, приоритета одних ресурсов над другими;
- сокращения HTTP-заголовков;
- push-отправки от сервера к клиенту данных, которые еще не были запрошены.
И для подключения современного протокола не нужно вносить каких-либо изменений на сайте.
Запись http/1.1 и http/2: что это, чем отличаются, преимущества и как подключить протокол впервые появилась Интернет Мажор.
Комментарии:
Войдите или зарегистрируйтесь чтобы оставить комментарий