Вы не понимаете, как это работает.
Работать с живыми между запросами.
Когда вы загружаете веб-страницу, она загружает HTML-страницу и обнаруживает, что ей нужны еще 20 ресурсов (файлы CSS, файлы javascript, изображения, шрифты и т. Д.).
В HTTP/1.1 вы можете запросить только один из этих ресурсов сразу, так что веб-браузер запускает еще 5 подключений (всего 6) и запрашивает 6 из этих 20 ресурсов. Затем он запрашивает оставшиеся 14 ресурсов, поскольку эти соединения освобождаются. Да, сторонники поддержки помогают между этими запросами, но это не единственное его использование, о чем мы поговорим ниже. Накладные расходы на настройку этих соединений небольшие, но заметные, и существует задержка в том, что они могут запросить только 6 ресурсов этих 20 за раз. Вот почему HTTP/1.1 неэффективен для сегодняшнего использования Интернета, где типичная веб-страница состоит из 100 ресурсов.
В соответствии с HTTP/2 мы можем скрыть все 20 запросов одновременно по одному и тому же соединению, чтобы получить хорошие выигрыши. И да, с технической точки зрения, вы не пользуетесь преимуществами keep-alives между ними, поскольку соединение все еще используется до тех пор, пока все они не прибудут, хотя по-прежнему получат небольшую задержку между первым запросом HTML и другим. 20.
Однако после этого начальный загрузка, скорее всего, будет больше запросов. Либо потому, что вы просматриваете сайт, либо потому, что вы взаимодействуете со страницей, и это делает дополнительные XHR-вызовы api. Тем, кто будет получать поддержку, будут доступны ли HTTP/1.1 или HTTP/2.
Таким образом, HTTP/2 не отменяет необходимость сохранения прав. Это отрицает необходимость в нескольких соединениях (между прочим).
Таким образом, ответ заключается в том, чтобы всегда использовать keep-alives, если у вас нет веских оснований. И какой тип бенчмаркинга вы делаете, чтобы сказать, что это не имеет значения?
Спасибо за указание на это различие. Беда в том, что настройка «keep-alive», похоже, не имеет никакого отношения к тестированию (бенчмаркинг было неправильным словом, извините). При использовании 'curl -I -http1.1' с keep-alive ответ включает _Connection: keep-alive_. Но использование 'curl -I -http2' не показывает такой записи. – michbona
В соответствии с HTTP/2 сохраняются права по умолчанию, а HTTP/2 не использует заголовок соединения (см. Раздел 8.1.2.2 спецификации HTTP/2 здесь: https://http2.github.io/http2-spec/# HttpHeaders). –
Если по умолчанию в HTTP/2 сохраняются права доступа, мне не нужно ничего устанавливать в конфигурации веб-сервера (кроме включения HTTP/2)? Или это специфично для каждого веб-сервера? И как я могу узнать, включен ли «живой» или «выключен»? – michbona