Это сложно по нескольким причинам.
Даже если сервер поддерживает HTTP / 2, клиент может его не использовать. Например, если прокси-сервер (часто используемый в корпоративной среде или антивирусными продуктами) может не поддерживать HTTP / 2 abs, поэтому принудительно используйте HTTP / 1.1, несмотря на тот факт, что клиент и сервер поддерживают HTTP / 2.
В следующей спецификации Resource Timing Level 2 предлагается атрибут nextHopProtocol
, который бы дал это, и поддержка достаточно хорошая , хотя примечательно, что Safari не не поддерживает это, учитывая распространенность iOS, которая, вероятно, является значительной частью ваших посетителей. Кроме того, он еще не утвержден, поэтому может измениться.
Вы также можете обнаружить эту сторону сервера, так как многие веб-серверы предоставляют информацию о соединении в переменных. Это можно использовать для установки заголовка HTTP или ответа в теле, чтобы сообщить клиенту о поддержке.
Однако даже если вы сможете точно измерить это, это может быть не столь точным показателем, как вы думаете о количестве одновременных запросов, которые будут использоваться. Например, Google Chrome экспериментирует с регулированием количества одновременных запросов на медленных соединениях . Это видно из Chrome 74 при использовании сетевого профиля «Медленный 3G» в Инструментах разработчика.