Огромное количество изображений - HTTP / 1.1 против HTTP / 2? - PullRequest
0 голосов
/ 01 марта 2019

Программа, которую я собираюсь написать, требует загрузки огромного количества HD-изображений.Идея программы не предусматривает загрузку их всех в одном HTTP-запросе (невозможно заархивировать их все в один файл).По этой причине программа будет запрашивать одно изображение с сервера одновременно.Я обнаружил, что HTTP / 2 может помочь, потому что он поддерживает технологию мультиплексирования.Все запросы HTTP будут выполняться по одному TCP-соединению.Я нашел статистику на этом сайте обнадеживающей: https://www.tunetheweb.com/blog/http-versus-https-versus-http2/. Представленные тесты загрузки 360 изображений показывают огромную разницу между HTTP / 1.1 и HTTP / 2.Я начал постепенно настраивать свой сервер Apache (v. 2.4.29) с этим руководством: https://helgeklein.com/blog/2018/11/enabling-http-2-in-apache-on-ubuntu-18-04/. При загрузке около 300 изображений размером около 1 МБ каждое, различия между этими двумя версиями протокола HTTP незначительны.Тесты были выполнены на HTML-файле, который содержит теги с гиперссылками на изображения, хранящиеся на том же сервере.

HTTP/1.1 Example

HTTP/2 Example

Размеры HTTP-запросов отличаются только на 0,1 МБ, а время загрузки больше.Тесты были перезапущены на различных браузерах (Google Chrome, Opera, Firefox) и результат всегда был одинаковым - смена протокола давала небольшую прибыль.Я также пытался использовать технику «HTTP Server Push», но это также не помогло получить полезный результат.

Является ли использование протокола HTTP / 2 в определенной проблеме хорошим шагом?Конфигурация сервера неверна?Хорошо ли построена тестовая среда?

1 Ответ

0 голосов
/ 01 марта 2019

Автор этого сайта, на который вы ссылаетесь (https://www.tunetheweb.com/blog/http-versus-https-versus-http2/).

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

Для сайтов с ограниченной пропускной способностью HTTP / 2 будет иметь меньшее влияние, так как вы в любом случае максимально используете свою пропускную способностьтак как после нескольких запросов полоса пропускания полностью используется в любом случае. Таким образом, в уровне HTTP нет реальной неэффективности. Кроме того, стоит увеличить штрафы за несколько соединений HTTP / 1.1, так как вы будете использовать эти соединения гораздо чаще (в отличие от типичного сайта, где, к тому времени, вы открыли 6-йсоединение, вы часто используете его только для одного запроса и закрываете его снова.)

На самом деле HTTP / 2 может работать вам вредно в таких сценариях, как ваш, поскольку примерно 100 ресурсов можно загружать параллельно, получая 1/100.пропускной способности и т. д. загрузка в пакетах по 100 вместо пакетов по 6 в HTTP / 1.1.Это означает, что может быть длительная задержка, а затем отображается 100 изображений, когда вы можете предпочесть, чтобы изображения загружались последовательно, и, таким образом, медленная подача.По этой причине Chrome устанавливает приоритеты последовательно, в то время как Firefox работает больше параллельно.Я не знаю, что делает ваше приложение.

Бесстыдный плагин, но на самом деле я опубликовал книгу по этому вопросу, если вы хотите узнать больше об этом: https://www.manning.com/books/http2-in-action. См. Код скидкив верхней части моего сайта по более низкой цене!

PS Я бы также спросил, почему вы хотите отправлять огромное количество изображений HD на мобильное устройство.Кажется расточительным, особенно на мобильных устройствах, которые могут иметь ограниченную пропускную способность и хранилище.По крайней мере, вы должны делать это только тогда, когда мобильное устройство подключено к Wi-Fi, чтобы снизить вероятность того, что ваши пользователи будут нести большие расходы.Но это все несколько не связано с вашим вопросом (хотя при меньших «предварительных изображениях» у вас может не быть такой ограниченной полосы пропускания, и поэтому вы можете начать видеть различия между HTTP / 1.1 и HTTP / 2).

...