Что делает http / 2 быстрее, чем http / 1, помимо мультиплексирования и проталкивания сервера? - PullRequest
0 голосов
/ 04 декабря 2018

Я мог понять, почему multiplexing и server push помогают ускорить загрузку веб-страниц и снизить нагрузку на сервер.Но я также узнал, что binary protocol, header compression и prioritization of requests также способствуют повышению производительности на http/2 по сравнению с http/1.Как эти три функции на самом деле способствуют улучшениям?

1 Ответ

0 голосов
/ 05 декабря 2018

Двоичный протокол

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

Сжатие заголовка

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

Приоритизация запросов

Это одна из наиболее интересных частей HTTP / 2, которая имеет огромный потенциал, но имеетпока не оптимизирован.Подумайте об этом так: представьте, что вам нужно загрузить 3 критических файла CSS и 3 огромных изображения.В HTTP / 1.1 будут открыты 6 соединений, и все 6 элементов будут загружаться параллельно.Это может показаться хорошим, но это означает, что менее критичные файлы изображений используют полосу пропускания, которая будет лучше потрачена на критические файлы CSS.С HTTP / 2 вы можете сказать «сначала загрузите критически важный CSS с высоким приоритетом, и только когда они будут готовы, посмотрите на эти 3 файла изображений».К сожалению, несмотря на то, что HTTP / 2 имеет модель расстановки приоритетов, которая допускает столь сложную расстановку приоритетов, как вы хотите (слишком сложно, как утверждают некоторые!) * Браузеры и серверы в настоящее время плохо ее используют (и владельцы сайтов, и сетьу разработчиков в настоящее время очень мало способов повлиять на это вообще).На самом деле неправильные решения по расстановке приоритетов могут фактически сделать HTTP / 2 медленнее, чем HTTP / 1.1, поскольку ограничение на 6 соединений снято, и сотни ресурсов могут загружаться параллельно, причем все они работают в одной полосе пропускания.Я подозреваю, что здесь будет намного больше исследований и изменений в реализациях, но не должно быть особых изменений в спецификации, так как она уже позволяет очень сложную расстановку приоритетов, как я упоминал.

Мы былиоптимизировать для HTTP / 1.1 на протяжении десятилетий и многое из этого выжимали.Я подозреваю, что у нас есть намного больше, чтобы выйти из HTTP / 2 (и HTTP / 3, когда он появится).Посмотрите мою будущую книгу , если хотите узнать больше по этой теме.

...