Сравнение производительности HTTP/1.1, HTTP/2 и HTTP/2 + Server Push

Опубликованы результаты изучения производительности различных методов извлечения коллекции ресурсов, используя для обращения к серверу протоколы HTTP/1.1, HTTP/2 и HTTP/2 + Server Push. В исследовании также оценено влияние на производительность нахождение запрашиваемых данных к кэше браузера и манипуляции ресурсами на уровне логики работы приложения (сведение ресурсов в единый JSON-блок).

Тестирование производительности выполнения 25 запросов показало в целом предсказуемые результаты — заметное отставание запроса через HTTP/1.1 при пустом кэше и лидирование отдачи ресурсов одним блоком (тесты с меткой «compound»). Производительность Firefox и Chrome была примерно на одном уровне.

0_1578035922.png

Но в тесте на обработку 500 запросов всплыло заметное отставание Chrome от Firefox при передаче большого числа запросов и отставание Firefox от Chrome при применении механизма Server Push и в ситуации использования HTTP/2 при наличия большей части данных в браузерном кэше.

0_1578035967.png 0_1578036186.png

По итогам тестов сделан вывод, что HTTP/2 позволяет достаточно эффективно обрабатывать раздельные запросы большой коллекции ресурсов. Отличия производительности простых схем раздельной отдачи ресурсов от методов, в которых ресурсы агрегируются в один блок, не столь существенны, чтобы оправдать значительное усложнение логики обработки на стороне приложения и сервера. Агрегирование имеет смысл только в ситуациях, в которых производительность имеет наивысший приоритет. Когда важнее упрощение логики и простой API, имеет смысл использовать раздельную обработку ресурсов.

Другим выводом является то, что браузерный кэш при использовании HTTP/2 не оказывает значительного влияния на производительность обработки запросов (полное выполнение 501 запроса оказалось медленнее выполнения 51 запроса при 90% наполнении кэша всего в 1.2 раза в Firefox и 2.3 раза в Chrome). Использование Server Push также не показало существенной выгоды. Авторы исследования также отметили, что оптимизация серверной части оказывает более существенное влияние на производительность, чем оптимизация выполняемого в браузере клиентского кода.

Источник: http://www.opennet.ru/opennews/art.shtml? num=52129

Полный текст статьи читайте на OpenNet