Articles.Abysm.ru | ||||||||||||||
Актуально до 1.06.2023
Информация Актуальна до даты Х, по истечении срока статья проверяется на Актуальность и обновляется. Затем в индикаторе актуальности дата меняется на новую.
HTTP/3 QUIC и его проблемы на IIS server.Предыстория... Началось все с PageSpeed сервиса оценки производительности и качества сайта. Помимо банальных способов улучшения показателей скорости загрузки сайта, решил поискать альтернативы на которые, в итоге, я и наткнулся. Я обнаружил протоколы HTTP/1.1 и HTTP/2. Конечно, я с ними сталкивался и раньше, но внимание им не уделял. Первый вариант еще используется, но большинство серверов сейчас использует HTTP/2. Затем проверил не вышел ли следующий более современный протокол и обнаружил HTTP/3 QUIC. Естественно каждый протокол, обещал рост производительности. HTTP/3 QUIC, обещал повышенную производительность для медленных соединений. Я радостно теряя тапки побежал внедрять сиё чудо. Преимущества HTTP/3 QUIC.- В случае потери пакета или пакетов HTTP/3 QUIC не останавливает загрузку страницы и ее ресурсов в ожидании потерянного пакета, как это делал HTTP/2.
Включение поддержки HTTP/3 в Windows Server 2022.В предыдущих версиях Windows Server поддержку HTTP/3 искать не стоит, ее там просто нет. Данный способ установки HTTP/3 расписан на многих сайтах. Жаль только, что разработчики, которые внедряли HTTP/3 QUIC на IIS server, не догадались сделать включение HTTP/3 нажатием в одну кнопку. Чтобы включить поддержку HTTP/3 на IIS нужно настроить несколько параметров в Windows Server 2022. 1. Включить поддержку протокола TLS 1.3. Вводить через CMD.exe. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v Enabled /t REG_DWORD /d 1 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v Enabled /t REG_DWORD /d 1 /f 2. Включить поддержку HTTP/3 для IIS. Вводить через CMD.exe. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableHttp3 /t REG_DWORD /d 1 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableAltSvc /t REG_DWORD /d 1 /f 3. Шифры TLS_CHACHA20_POLY1305_SHA256 (cipher suite) для TLS подключений. Вводить через PowerShell. Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0 Проверка, что шифр включен. (Get-TlsCipherSuite).Name | Select-String CHACHA 4. Добавить HTTP/3 в заголовок ответа сайта. Заходим в Диспетчер служб IIS, выбираем сайт, заголовки ответов HTTP. Имя Alt-Svc, значение h3=":443"; ma=86400; persist=1. Как сейчас работает HTTP/3 QUIC на IIS server.Браузеры будут пытаться использовать QUIC, только если им доподлинно известно, что сервер поддерживает протокол HTTP/3. Это хорошо видно на примере сайта YouTube.com. 1. Первое подключение к серверу YouTube.com ![]() А на примере моего сайта Abysm.ru видно, что первое соединение осуществляется по протоколу HTTP/2 и только после повторного обновления страницы браузер подключается через HTTP/3. Как я понял это происходит потому, что очень много сайтов в интернете еще не перешли на протокол HTTP/3 и из-за этого подключение осуществляется по умолчанию на протоколе HTTP/2. Исключение из этого правила, крупные и известные сервисы на HTTP/3 о которых браузеры точно знают что они поддерживают этот протокол. 1. Первое подключение к серверу Abysm.ru ![]() 2. Последующее обновление страницы или переход на другие страницы сайта. ![]() Когда браузер впервые связывается с сервером, он будет использовать только HTTP/2 или HTTP/1.1. Чтобы сообщить браузеру, что сервер поддерживает HTTP/3, задается HTTP-заголовок: имя Alt-Svc, значение h3=":443"; ma=86400; persist=1. По факту, на данный момент времени, при первом подключении первые данные браузер получает либо по HTTP/2, либо по HTTP/1.1. Что сводит потенциалную пользу протокола HTTP/3 к нулю, т.к. ползователь получает основной объем данных о вашем сайте (.css, .js и пр) при первом соединении, а затем исползует их из кэша браузера. Тест скорости на PageSpeed.Если верить тесту скорости PageSpeed, то производительность между протоколами HTTP/2 и HTTP/3 находится в рамках погрешности теста. Визуально, на глаз, особой разницы не заметно между протоколами HTTP/2 и HTTP/3. Во многих статьях по HTTP/3 QUIC упоминается, что протокол HTTP/3 показывает наибольшую производительность в медленных сетях. Проверить это не получится т.к. у меня быстрое соединение. Кроме слов, никаких тестов демонстрирующих прирост скорости в медленных сетях я не обнаружил. HTTP/21. Мобильные устройства ![]() 2. ПК ![]() HTTP/31. Мобильные устройства ![]() 2. ПК ![]() Проблемы HTTP/3 QUIC на IIS server.- На данный момент, первое подключение осуществляется по протоколу HTTP/2 или HTTP/1.1 и затем получив нужный заголовок переходит на HTTP/3 QUIC.
Выводы о HTTP/3 QUIC на IIS server.Сейчас большинству первопроходцам HTTP/3 QUIC, не дает практически никаких преимуществ перед HTTP/2. Исключением из этого правила являются крупные корпорации. Их браузеры внесли в свой список на подключение по протоколу HTTP/3 QUIC, а все остальные будут ждать пока браузеры не начнут по умолчанию всех соединять по HTTP/3 QUIC. Если смотреть на скорость внедрения HTTP/3 QUIC, на это еще уйдет как минимум 3-5 лет. Владельцы WEB-серверов попробовавших HTTP/3 QUIC, скорее всего не заметят разницы и не будут стремятся переходить на новый протокол с протоколов HTTP/2 или HTTP/1.1. Протокол HTTP/3 QUIC все еще находится в разработке. Внимание! Около половины статей посвященных HTTP/3 QUIC полная чушь не имеющая отношения к реальности. На YouTube.com можно посмотреть ролики с разработчиками HTTP/3 QUIC, где они обсуждают возникающие проблемы и их решения. Также вы можете найти документацию по HTTP/3 QUIC на IETF.org. Теги: HTTP/3, quic, HTTP/2, HTTP/1.1, IIS, server, http, https, TLS 1.3, pagespeed, сервер, протокол, подключение, поддержка, браузер, windows, производительность, скорость, пк, мобильные, кэш, тест, файрвол, заголовок, powershell, CMD.exe, шифр, Alt-Svc. |
|
|||||||||||||