Идеального пути определения качества соединения нет.
Есть ограниченная поддержка
NetworkInformation. Это наилучший подход, но он пока в ранней стадии разработки.
Классический способ определения скорости описан
тут.
Разумный вариант - использовать легковесную посадочную страницу и расширенную версию с тяжелым контентом.
Слушать про onload секунду, если за секунду оно не наступает останавливаться на легковесном варианте, в противном случае грузить все остальное.
Вы также можете рассмотреть использование
критического пути (минимально необходимого CSS), который включен в тело страницы изначально. Как только страница загружена, можно включать загрузку остального содержимого.
Еще можете
замерять время загрузки страницы в браузере используя
Navigation Timing API. Если оно больше определенного порога, то загружать тяжелый контент, например видео.
В целом путей решения поставленной задачи немного, но достаточно.
Сфокусируйтесь все же на оптимизации сайта или страницы. Поставьте себе планку, например 200кб и оптимизируйте сайт для нее. От этого выиграют все: и ваши пользователи, и серверная часть тоже.