Почти все, что вы в тот или иной момент посещаете в Интернете, использует специальный протокол, известный как протокол передачи гипертекста (HTTP). С 1999 года вы используете HTTP версии 1.1. Это был стандарт на протяжении многих лет, пока Google не объявил 10 февраля 2015 года, что его браузер будет добавление полной поддержки того, что сейчас известно как HTTP/2. Некоторым это покажется полной тарабарщиной, но это потому, что нет описания того, что HTTP/2 делает по-другому. Чтобы понять это, нам нужно изучить, что именно делает эта новая версия протокола и чем она похожа на версию HTTP, которую мы используем уже почти два десятилетия.
Чего достигает HTTP/2?
Каждый раз, когда разрабатывается новая версия протокола, она ставит перед собой конкретные цели. Наиболее очевидная цель — обратная совместимость со своим предшественником HTTP 1.1. Без этой возможности каждому серверу в мире придется переключиться на HTTP/2, чтобы вы могли просматривать их веб-сайты.
Несмотря на совместимость со старой версией, этот новый протокол будет использовать передовые методы в качестве меры против задержек, что ускоряет загрузку страниц. Это основная цель и проблема, которую HTTP/2 планирует решать наиболее активно.
Другие улучшения включают повышенную безопасность и совместимость с обратными прокси-серверами.
В целом HTTP/2 не будет сильно отличаться от HTTP 1.1. Когда вы пользуетесь Интернетом, самый сильный эффект, который вы почувствуете, это то, что веб-страницы будут загружаться значительно быстрее, если они поддерживают новую версию.
Как HTTP/2 делает Интернет быстрее?
Сказать, что «HTTP/2 делает все быстрее», — значит оказать медвежью услугу объему работы, которая фактически выполняется за кулисами для достижения этой цели. Протокол HTTP 1.1 пронизан рядом проблем, которые были приемлемы в первые годы 21-го века, но больше не имеют смысла продолжать жить во времена, когда пропускная способность дешевле, а серверы должны загружать страницы с гораздо большей скоростью..
Основной способ, с помощью которого HTTP/2 планирует сократить время загрузки страниц, — это сжатие заголовка (фрагмента данных, отправленного вашим клиентом с просьбой к серверу предоставить вам данные внутри веб-страницы, которую вы посещаете). Это сводит к минимуму время, в течение которого ваш компьютер «пожимает руку» целевому серверу, за счет уменьшения объема данных, которые необходимо отправить. Сегодня процессоры достаточно мощны, чтобы обрабатывать миллионы распаковок за короткий промежуток времени. Имеет смысл сделать это сейчас.
Хотя вышеизложенное позаботится только о задержке первоначального запроса, существуют также способы, которыми HTTP/2 планирует позаботиться обо всем вашем взаимодействии с веб-сайтом. Он будет напрямую реализовывать технологии серверной отправки, которые позволят серверам быть более активными в процессе связи. До недавнего времени вам приходилось периодически отправлять запросы на сервер, заставляя его интерпретировать заголовки, которые вы генерируете каждый раз, когда запрашиваете информацию. При использовании HTTP/2 сервер будет отправлять вам новые данные при их появлении.
Наконец, HTTP/2 выполняет так называемое «мультиплексирование» при отправке запросов. В HTTP 1.1 была проблема: каждый новый пакет имел приоритет над предыдущим. Все они были обработаны линейным образом, что привело к проблеме, называемой «блокировкой начала строки». По сути, производительность сервера была ограничена тем, что ему приходилось обрабатывать первый поступивший к нему пакет, оставляя остальные в очереди. Если обработка пакета занимала много времени, всем остальным пакетам приходилось ждать своей очереди. При использовании HTTP/2 одновременно будет обрабатываться несколько пакетов.
Благодаря такому сочетанию различных «лечений» HTTP/2 сделает все возможное, чтобы избежать замедления работы из-за проблем, специфичных для HTTP. Это будет особенно выгодно для веб-сайтов с меньшими серверами, которые не подключены к такой большой пропускной способности, как те, на которых работают Facebook и Google.
Если у вас есть вопросы или идеи, обязательно оставьте комментарий со своими мыслями!