Назад | Перейти на главную страницу

Действительно ли HTTP / 2 быстрее в реальном мире?

Я понимаю все преимущества HTTP / 2, однако есть ли проверенные сравнения яблок с яблоками, чтобы показать его преимущество в скорости?

Акамай имеет страница, созданная для этой цели, но кажется, что HTTP / 2 в лучшем случае идет в ногу со временем, а в худшем - медленнее. Я тестировал его в Firefox. В Chrome HTTP / 2 был немного быстрее.

Прежде всего, давайте проверим, используете ли вы HTTP / 1.1 или HTTP / 2.

Откройте инструменты разработчика в Chrome или Firefox, добавьте столбец протокола и перезагрузите страницу. вы должны увидеть несколько изображений, загруженных с http1.akamai.com, и количество с http2.akamai.com:

Если вы не видите здесь HTTP / 2, то что-то препятствует использованию HTTP / 2 (вероятно, прокси или антивирусное программное обеспечение), что может объяснить это. Хотя из вашего скриншота я вижу, что «Ваш браузер поддерживает HTTP / 2!» поэтому я предполагаю, что вы используете HTTP / 2, но без проверки на вред.

Что делает тест, так это загружает 378 изображений для создания каждого глобуса. Загрузка такого количества ресурсов - это то, в чем HTTP / 1 особенно плох, и в чем HTTP / 2 особенно хорош - в основном из-за HTTP / 2 с возможностью мультиплексирования.

Поэтому, если вы используете HTTP / 2, но не видите, что HTTP / 2 работает быстрее, это, вероятно, связано с одной из следующих причин:

  1. Что-то кэширует ресурсы локально, что означает, что вы загружаете их локально, а не напрямую из Akamai. Например. если у вас есть прокси-сервер компании, который выполняет кеширование за вас. Теперь Акамай устанавливает Cache-Control: max-age=0, no-cache, no-store HTTP-заголовок на ресурсе, поэтому его не следует кэшировать, но все же - прокси-серверы делают странные вещи! честно говоря, загрузка этого сайта за 0,62 секунды в HTTP / 1 звучит слишком быстро, если вы не сидите в центре обработки данных Akamai, так что я думаю, что происходит именно это. Попробуйте еще один тест HTTP / 2 (Например, у меня есть собственный в блоге).
  2. У вас сверхбыстрая сеть без задержек. Задержка - основная причина того, что HTTP / 1.1 работает медленнее, чем HTTP / 2, поскольку время тратится на отправку запросов туда и обратно, в течение которого никакие другие запросы не могут быть отправлены по этому соединению. На скриншотах ваша задержка выглядит неоправданно низкой, поэтому у вас должно быть супер крутое соединение. Либо так, либо вы живете по соседству с Акамай, либо читаете его на месте.
  3. Вы находитесь в сети с большой потерей пакетов. HTTP / 2 использует одно TCP-соединение (в основном), и хотя это хорошо для большинства случаев использования, на самом деле ситуация ухудшается в плохих сетях, поскольку все потоки HTTP / 2 задерживаются из-за потери одного TCP-пакета (до HTTP / 1.1, где 6 независимых соединения могут действовать действительно независимо). QUIC пытается решить эту проблему, переходя от TCP к протоколу на основе UDP с надежностью, подобной TCP, обеспечиваемой на уровне потока, а не на уровне соединения. Но в этом случае я ожидаю, что и HTTP / 1.1, и HTTP / 2 будут медленнее, чем скриншоты, которые вы даете, поэтому не думайте, что это так.
  4. У вас отстойный браузер HTTP / 2. Я видел Проблемы с реализацией HTTP / 2 даже в самых популярных браузерах. Попробуйте другой браузер. вы уже сказали, что это работает так, как вы ожидаете, в Chrome, но не в Firefox, поэтому это может быть что-то специфичное для браузера. Но опять же, это не объясняет, почему оценки HTTP / 1.1 ооочень низкие.