HTTP/2 — как новая версия оптимизирует передачу данных в Интернете

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

Что такое HTTP?

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

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

Подобно двум краеугольным камням Всемирной паутины — URL и HTML — разработка HTTP началась в Европейской организации ядерных исследований (CERN) в Швейцарии — это произошло в 1989 году. Первая опубликованная спецификация, RFC 1945 (Request For Comments), выпущенная в мае 1996 года, стала широко известна как HTTP/1.0. Эта первая версия была заменена в июне 1999 года на HTTP/1.1, которая используется до сих пор. Официальный преемник HTTP/2 был представлен в мае 2015 года как RFC 7540, и планируется, что он произведет революцию в передаче данных в Интернете.

Разработка HTTP/2

В 2009 году Google представил свою альтернативу HTTP/1.1 — SPDY. Больше всего критики в адрес старой версии HTTP вызвало то, что протокол передачи данных без необходимости препятствовал созданию новых, сложных веб-сайтов. Это было связано с тем, что при использовании HTTP/1.1 для каждого отдельного файла необходимо было устанавливать новое соединение TCP/IP. Используя SPDY, Google может решить эту проблему за счет использования мультиплексов при передаче. Через соединение TCP/IP может быть отправлено множество документов. В 2012 году Рабочая группа инженеров Интернета (IETF) начала работу над HTTP/2 с концепцией, основанной на протоколе SPDY от Google. Поскольку в реализации SPDY были обнаружены многочисленные недостатки и пробелы в безопасности, потребовалось внести множество изменений, что привело к тому, что HTTP/2 стал значительно отличаться от SPDY.

Улучшения HTTP/2

Одна из основных характеристик HTTP/1.1 уже упоминалась: для передачи клиенту/браузеру различных элементов страницы, таких как изображения, файлы JavaScript или CSS, необходимо открывать и снова закрывать отдельное TCP/IP-соединение. Как и SPDY, являющийся его ролевой моделью, HTTP/2 использует процедуру мультиплексирования для того, чтобы весь веб-сайт мог быть загружен с помощью всего одного соединения. Сервер также имеет возможность передавать предсказуемые последующие данные клиенту без его запроса (server push).

С помощью HTTP/2 пакеты данных с веб-сайтов могут отправляться в порядке их приоритета; например, элементы, отвечающие за создание сайта, появляются первыми. Заголовок HTTP/2 отправляется в сильно сжатом виде по сравнению с HTTP/1.1, поскольку ненужная информация опускается. Дополнительным усовершенствованием является использование двоичного кода (вместо текстовых файлов) при обмене данными, что упрощает процесс и делает его менее подверженным ошибкам.

Ниже приводится краткое описание всех усовершенствований HTTP/2:

  • соединение между браузером (клиентом) и веб-сайтом
  • обмен сообщениями в двоичном коде
  • сильно сжатый заголовок сообщения HTTP
  • подталкивание сервера с прогнозируемыми запросами (только для Apache и не для Nginx)
  • приоритизация важных элементов сайта

Предыстория новых возможностей HTTP/2 показана в этом видео от Akami Technologies:

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

транскрипция

Интернету уже 25 лет, и то, как ваш браузер общается с веб-сайтом — протокол HTTP — не сильно изменилось с тех пор. Однако то, как мы пользуемся Интернетом, изменилось, и ограничения HTTP/1 начинают давать о себе знать. Загрузка веб-страниц происходит медленнее, чем нужно, и сеть используется не так эффективно, как могла бы. Это происходит потому, что HTTP/1 фактически позволяет только одному запросу быть на одном TCP-соединении в любой момент времени.

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

Большое количество запросов на современной веб-странице также вызывает другую проблему: каждый запрос имеет набор HTTP-заголовков, который со временем увеличился благодаря таким вещам, как cookies, и они могут складываться в большое количество данных для отправки. В мобильных сетях с высокой задержкой это существенно влияет на производительность. Все это сделало HTTP/1 медленным и все более сложным в использовании. Многие сайты пытаются решить эти проблемы, обходя их, используя такие приемы, как печать CSS, вставка и конкатенация. Хотя они и помогают, эти хаки являются хорошим признаком того, что мы можем сделать гораздо лучше.

Поэтому в 2012 году началась работа над HTTP/2. Этот новый протокол, основанный на проекте Speedy, позволяет использовать одно соединение для всего обмена данными между вашим веб-браузером и веб-сайтом. Для этого он разбивает сообщения запроса и ответа на небольшие фрагменты, называемые «фреймами», и маркирует их, чтобы их можно было собрать, когда они дойдут до получателя.

Это называется мультиплексированием и позволяет использовать сеть гораздо эффективнее, поскольку многие сообщения могут находиться в полете одновременно, в отличие от HTTP/1. Кроме того, HTTP/2 позволяет сжимать заголовки, что означает, что пропускная способность не тратится на повторение большого количества избыточной информации. Это позволяет быстрее загружать страницы, даже если они требуют большого количества запросов, как это делают многие, поскольку запросы требуют меньше времени на прохождение по сети. Другие оптимизации, такие как server-push, позволяют сайту отправлять ответы браузеру до того, как он в них нуждается, что также повышает производительность.

Первые результаты показывают, что простое включение HTTP/2 часто — но не всегда — дает повышение производительности от пяти до пятнадцати процентов. При определенной настройке это может быть значительно больше. Важно знать, что новый протокол не изменяет такие вещи, как методы HTTP. Заголовки или коды состояния, используемые HTTP API, должны выглядеть практически так же. И его можно даже использовать по принципу hop-by-hop, так что вам не придется обновлять всю инфраструктуру одновременно.

HTTP/2 почти готов. В ближайшее время его должны поддерживать популярные веб-браузеры, такие как Firefox, Internet Explorer и Google Chrome. Akamai также будет поддерживать HTTP/2, что позволит охватить новым протоколом большую часть Интернета.

HTTP/2 — поддержка браузерами

С момента выпуска HTTP/2 была проделана большая работа. Многочисленные веб-браузеры и серверы тем временем поддерживают новый интернет-протокол. В Mozilla Firefox протокол внедрен даже с версии 36 (февраль 2015 года). Все версии до сих пор загружены с HTTP/2 over TLS, который является зашифрованным вариантом протокола передачи данных.

Факт

80% браузеров уже поддерживают HTTP/2. Кроме Opera Mini, браузера для Blackberry, IE Mobile и браузера UC для Android, поддержка HTTP/2 имеется в текущих версиях браузеров (по состоянию на март 2017 года). Обзор всех поддерживаемых браузеров можно найти здесь.

Количество веб-сайтов, которые уже используют новый протокол передачи данных, относительно невелико по сравнению с поддерживающими браузерами. Тем не менее, за год их число увеличилось почти до 10% с 1,2% на конец сентября 2016 года. В марте 2017 года не менее 12,7% всех веб-сайтов использовали HTTP/2. Обзор текущего состояния использования можно найти здесь. На данный момент операторы веб-сайтов с очень высоким числом просмотров, такие как Google и Twitter, перевели свое присутствие в Интернете на HTTP/2. Учитывая преимущества и растущую поддержку во всех современных браузерах, использование HTTP/2 большинством веб-сайтов будет лишь вопросом времени.

Совет

Благодаря пакетам веб-хостинга IONOS, ваш веб-проект может воспользоваться HTTP/2 и SSL-сертификатом для оптимальной безопасности.

В этом обзоре показано, какие браузеры поддерживают HTTP/2:

IE Edge Firefox Chrome Safari Opera iOS Safari Браузер для Android Chrome для Android
11* 14 50 55 10* 42 9.3 53 55
15 51 56 10.1* 43 10.2
52 57 ТП* 44
53 58
54 59

*частичная поддержка

Взгляд в будущее

Использование HTTP/2 не является обязательным требованием, но имеет ряд преимуществ. Кроме того, с конца 2014 года шифрование SSL/TLS является важным фактором ранжирования Google, и по соображениям SEO им не стоит пренебрегать. Если вы раздумывали над идеей сертификации своего веб-присутствия, вам следует серьезно рассмотреть возможность перехода непосредственно на HTTP/2 через TLS.

При использовании HTTP/2 есть два дополнительных фактора, которые благоприятствуют хорошему ранжированию. Первый заключается в том, что более короткое время загрузки вашего сайта лучше ранжируется Google, а также является предпочтительным для посетителей сайта. Во-вторых, HTTP/2 гарантирует, что время загрузки вашего сайта не превысит установленный Google порог в две секунды, поскольку URL-адрес просматривается не так часто. Благодаря HTTP/2 ваш сайт будет регулярно просматриваться Google, а новый контент будет индексироваться значительно быстрее.

Совет

Хотите сделать свой сайт более безопасным? Узнайте больше о SSL-сертификатах от IONOS и о том, как они повышают надежность вашего сайта.

Оцените статью
cdelat.ru
Добавить комментарий