1. Что такое HTTP/2

Протокол передачи гипертекста (HTTP) — это набор стандартов, позволяющих пользователям Интернета обмениваться информацией о веб-сайтах. С момента его появления в 1991 году было четыре итерации HTTP.

HTTP/2 был выпущен в 2015 году как основная версия протокола HTTP/1.1. Он был создан на основе протокола SPDY как способ улучшить работу в Интернете за счет ускорения загрузки страниц и сокращения времени приема-передачи (RTT), особенно на ресурсоемких веб-страницах.

2. Различия между HTTP/2 и HTTP/1.1

  • HTTP2 является бинарным, а не текстовым
  • HTTP2 полностью мультиплексирован, вместо упорядоченного и блокирующего
  • Таким образом, HTTP2 может использовать одно соединение для параллелизма.
  • HTTP2 использует сжатие заголовков для уменьшения накладных расходов.
  • HTTP2 позволяет серверам заранее «проталкивать» ответы в клиентские кэши.

3. Пример кода HTTP/1.1

Здесь у нас есть стандартный экспресс-сервер с двумя конечными точками. Результат выполнения запроса к нему:

4. Обновленный код HTTP/2

Чтобы обновить наш сервер express.js до протокола HTTP/2, мы будем использовать пакет Http2 Express Bridge, который доступен через npm и может быть установлен с помощью:

npm install http2-express-bridge

По сути, это оболочка для создания http2-сервера с приложением express.js.

После этого нам нужно изменить следующие строки:

1.

const https = require('https');

to

const http2Express = require('http2-express-bridge')
const http2 = require('http2')

2.

const app = express();

to

const app = http2Express(express);

3.

https.createServer(options, app).listen(port);

to

http2.createSecureServer(options, app).listen(port);

И ниже мы можем увидеть окончательный результат.

И вот результат HTTP/2:

5. Заключительные мысли

Как мы видим, обновить наш сервер Express.js с HTTP/1.x до HTTP/2 довольно просто, и для меня оно того стоит, просто потому, что HTTP/2 может предложить гораздо больше.

Если вам понравился контент, хлопайте в ладоши, а если у вас есть какие-то вопросы или рекомендации, не стесняйтесь писать их в комментариях :). Вы также можете поддержать меня, подписавшись на меня :).

Не забудьте ознакомиться с моими предыдущими статьями — Различия в производительности между HTTP REST API и WebSocket REST API и WebSocket REST API с NodeJS — стиль Express.js