У нас имеется множество компонентов React Native <Image>
, отображаемых на экране, и наблюдаются проблемы с производительностью из-за множества одновременных запросов http . Открытие и закрытие соединения обходится дорого, а наличие слишком большого количества одновременных соединений может привести к ограничениям, которые вызывают тайм-ауты.
Функция HTTP / 2 поддерживает мультиплексирование , позволяя одновременно отправлять несколько запросов и ответных сообщений между клиентом и сервером по одному соединению вместо нескольких, что сокращает время загрузки страницы.
CloudFront поддерживает HTTP / 2, HTTP / 1.1 и HTTP / 1 по умолчанию в зависимости от версии, которую клиент отправляет в заголовке запроса.
Мы заметили, что наше приложение React Native отправляет HTTP / 1.1 в качестве версии в заголовках запросов для любого GET на <Image>
. В отличие от популярных приложений, мы открываем и закрываем одно соединение для каждого GET. Как мы можем убедиться, что запросы React Native Image используют HTTP / 2 и совместно используют соединение?
(Все наши изображения находятся в одном домене CloudFront.)
Редактировать - Больше информации:
Наш дистрибутив CloudFront поддерживает HTTP / 2:
И, похоже, клиент и сервер договариваются о h2: