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