Простое сравнение производительности HTTPS, SPDY и HTTP/2

Original author: HttpWatch
  • Translation


Firefox 35 был выпущен совсем недавно и стал первым браузером, поддерживающим HTTP/2 по умолчанию.

HTTP/2 — не совсем законченная технология, так что Firefox активирует версию 14 HTTP/2, хотя и немногое должно измениться в этом протоколе. В настоящее время Google поддеживает эту же версию на своих серверах параллельно с SPDY, что дает нам шанс для сравнения производительности простого HTTPS, SPDY и HTTP/2 на одной и той же странице.

Также не так давно был обновлен HttpWatch. Теперь он поддерживает HTTP/2 внутри Firefox. Появилась новая колонка, сообщающая нам протокол, по которому был обработан каждый запрос:



Сравнение производительности


Для тестирования попробуем загружать одну и ту же страницу несколько раз (через разные протоколы). Наш подопытный, Google UK, использует следующие технологии:
  • Raw HTTPS
  • SPDY/3.1
  • HTTP/2

Переключение между каналами происходит с помощью страницы about:config в Firefox:



Каждый тест выполнялся в «свежей» установке браузера, что подразумевает полное отсутствие кэша и других файлов.

Тест #1 – Размер запроса и заголовки ответов

Многие сайты уже перешли к сжатию контента своих страниц, что является явным плюсом в скорости работы сайта. К сожалению, HTTP/1.1 не поддерживает сжатие HTTP заголовков, которое добавляется к каждому запросу и ответу. SPDY и HTTP/2 были спроектированы для передачи этих данных разными способами.

SPDY использует алгоритм DEFLATE общего назначения, в то время как HTTP/2 прибегает к помощи HPACK, специально предназначенного для данных целей. Он использует предопределенные токены, динамические таблицы и технологию Huffman.

Заметить разницу в размерах заголовков можно даже при отправке пустого запроса. На странице Google UK присутствует запрос beacon, возвращающий пустой ответ (код 204). Этот скриншот HttpWatch показывает разницу в размерах отправленных и полученных сообщений:


Победитель: HTTP/2

Размеры запросов HTTP/2 значительно меньше благодаря алгоритму HPACK.


Тест #2: размер ответа

Сообщение-ответ формируется из текста запроса, а также ответа в зашифрованном виде. Зная, что HTTP/2 отправляет более маленькие по размеру запросыЮ не означает получение им более сжатых ответов, да?

Взглянем на скриншоты:



Как видим, SPDY обгоняет своего конкурента:



Причина может заключаться в лишних байтах, добавляемых к HTTP/2 фрейму DATA. В наших логах мы можем наблюдать это явление при получении ответа от серверов Google. В документации к протоколу указана следующая причина добавления байтов:
Вставка дополнительных символов производится для предотвращения атак через HTTP. К примеру, атаки, в которые включается полный текст ответа (посмотрите на BREACH).


Победитель: SPDY

Возможно, что размер ответа будет сокращен в более поздних версия HTTP, но сейчас он не является лидером в этой категории.


Тест#3: Количество TCP подключений и SSL Handshakes, требуемых для загрузки страницы

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

SPDY и HTTP/2 позволяют получать и отсылать больше информации за одно подключение. Посмотрим на результаты тестов.


HTTP/2:



HTTPS же может создавать более одного подключения, но в них передается меньше информации:



Ничья: SPDY & HTTP/2

В SPDY и HTTP/2 сокращено количество запросов, но они стали более объемными, что должно неплохо повлиять на скорость загрузки данных. Это также менее загружает сервер, ведь теперь им не нужно справляться с большим числом запросов, что тоже немало сказывается на их производительности.


Test #4: Время загрузки страницы

Скриншоты ниже показывают скорости загрузки страниц с использованием разных протоколов:



Победитель: HTTP/2

HTTPS проигрывает в данном вопросе из-за не самого лучше механизма сжатия передаваемой информации, а также необходимости открытия дополнительных подключений. Для более сложных страниц разница между SPDY и HTTP/2 должна быть более заметна.

Вывод


Нам показалось, что HTTP/2 был заметно быстрее SPDY, но ответы были больше. Преимущество явно получено засчет более маленького GET и компрессии HPACK. Наше подключение к интернету, как и у многих, несимметрично — скорость скачивания может быть в разы больше, чем скорость отправки пакетов. Это означает, что любое преимущество в отправке будет важнее, чем эквивалентное ей скачивание.


HTTP/2 способен потягаться с такими протоколами, как HTTPS и даже SPDY. Однако, наблюдаемые нами дополнительные байты в ответах являются спорной функцией, так как они ставят перед выбором безопасности и производительности.

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 4

  • UFO just landed and posted this here
      0
      Именно, 1 тест не показателен. Показательна выборка из тысяч тестов, причем каждый раз условия должны быть околоэталонными, что мало достижимо.
      0
      Взглянуть бы на тесты с хоть сколько-нибудь реальным сервером, а не гугл, который чёрт их знает, как настраивает свои сервера, как отдаёт мозилле, а как — хрому и т.д. =)
        0
        Все картинки в статье перепутаны, некоторых не хватает, читайте лучше оригинал.

        Only users with full accounts can post comments. Log in, please.