Http2: Разъяснение http2 / Хабр

Преимущества использования протокола HTTP/2 | LeaderSSL

HTTP/2 – протокол, основанный на протоколе SPDY от Google. Это самый свежий стандарт, который уже поддерживается Chrome, Firefox, Opera, Safari и другими браузерами. Основные задачи HTTP/2 — позволить клиентам/серверам выбирать протокол, реализовать совместимость с HTTP/1.1, снизить задержку загрузки страниц, а также поддержать существующие способы использования HTTP.


Как работает протокол HTTP/2?


Основная цель разработки данного протокола – это ускорение загрузки страниц. Высокая производительность достигается путем использования специальной методики – мультиплексирования потоков. Что оно собой представляет? Пакеты нескольких потоков смешиваются в одном соединении, после чего разделяются по прибытию. Помимо мультиплексирования, данный протокол будет использовать сжатие заголовков, а также расстановку приоритетов запросов. Часть представленных функций уже была использована в SPDY.


Каким образом протокол HTTP/2 влияет на безопасность?


Спецификация протокола разъясняет, как именно использовать его для текста и TLS. Однако Google (Chrome) и Mozilla (Firefox) объявили о том, что будут поддерживать HTTP/2 только по TLS. Хотя Microsoft и не объявила об этом официально, тестовые версии Internet Explorer на Windows 10 показали, что компания приняла то же самое решение. Все это говорит о том, что новый протокол постепенно станет реализовываться только через TLS. Следовательно, HTTP/2 будет поддерживаться только для URL-адресов типа HTTPS:. Безусловно, это звучит как принуждение к использованию HTTPS, однако в конечном счете это приведет только к выгоде, ведь интернет станет безопаснее.


Поэтому, если вы хотите максимизировать преимущества HTTP/2, вы должны рассмотреть применение этого протокола с TLS. Этот стандарт имеет определенные требования к TLS и будет использовать самую безопасную реализацию TLS. Спецификация требует TLS 1. 2 и выше, запрещает сжатие и повторное согласование, а также имеет жесткие требования к размеру ключей и набору кодов. Ниже представлены общие рекомендации/возможности TLS для HTTP/2, которые адресованы браузерам и пользователям:



  • Применяются рекомендации по безопасному использованию TLS

  • Поддерживается Server Name Indication (SNI). Это нужно только для стандарта с TLS3 и выше.

  • Для HTTP/2 через TLS2 необходимо отключить сжатие. Сжатие не требуется, поскольку протокол обеспечивает возможности безопасного сжатия.

  • Для HTTP/2 через TLS2 необходимо отключить повторное согласование.

  • Размер эфемерного ключа должен быть как минимум 2048 битов для DHE и 224 бита для ECDHE.

  • Протокол не должен использовать наборы кодов из черного списка.

  • Набор кодов должен быть только AEAD.

  • Для нового стандарта предпочтительны AEAD режимы, такие как CGM.

  • Минимальный размер ключей — 128 бит EC, 2048 бит RSA

HTTP/2 также требует использования ALPN (Application-Layer Protocol Negotiation Extension) – это TLS-расширение, которое эффективно согласовывает HTTP-версии.


Спецификация HTTP/2 указывает, что TLS не является обязательным условием для применения данного протокола. Однако использование TLS позволяет повысить безопасность соединения, защитив персональные данные клиентов, что дает дополнительную выгоду. К тому же стоит помнить, что команды разработчиков Firefox и Chrome решили реализовать HTTP/2 только по TLS.


HTTP/2 – более быстрый и безопасный протокол. Если вы хотите воспользоваться всеми его преимуществами — сниженной задержкой открытия страниц, приватностью, безопасностью пользовательских данных, — обязательно рассмотрите реализацию HTTP/2 через TLS.
Разумный владелец сайта – это тот владелец, который смотрит в будущее. Именно поэтому стоит подготовить свой сайт к новому стандарту уже сейчас. Сделать это можно очень просто – путем заказа SSL-сертификата в компании ЛидерТелеком.
Вы всегда можете выбрать один из трех типов сертификатов:



  • DV – подтверждающие только доменное имя (к примеру, PositiveSSL)

  • OV – подтверждающие доменное имя и организацию (к примеру, InstantSSL)

  • EV – сертификаты с расширенной проверкой (к примеру, Comodo EV)

Держите руку на пульсе событий, всегда будьте готовы к новым техническим решениям и веяниям!


Что такое протокол HTTP/2 и чем он полезен для сайтов?. Читайте на Cossa.ru

05 мая 2016, 13:25


В ближайшее время интернет ожидает переход на новый протокол HTTP/2, ускоряющий загрузку сайтов. Разбираемся, как это повлияет на сайтостроительство, SEO и другие аспекты.

Николай Мациевский,
Айри.рф

Поделиться

Поделиться

Что такое HTTP/2 и зачем он нужен


Протокол HTTP/1. 1 используется с 1999 года и со временем обрел одну существенную проблему. Современные сайты, в отличие от того, что было распространено в 1999-м году, используют множество различных элементов: скрипты на Javascript, стили на CSS, иногда еще и flash-анимацию. При передаче всего этого хозяйства между браузером и сервером создаются несколько соединений.


Протокол HTTP/2 существенно ускоряет открытие сайтов за счет следующих особенностей:

  • соединения: несколько запросов могут быть отправлены через одно TCP-соединение, и ответы могут быть получены в любом порядке. Отпадает необходимость держать несколько TCP-соединений;
  • приоритеты потоков: клиент может задавать серверу приоритеты — какого типа ресурсы для него более важны, чем другие;
  • сжатие заголовка: размер заголовка HTTP может быть сокращен;
  • push-отправка данных со стороны сервера: сервер может отправлять клиенту данные, которые тот еще не запрашивал, например, на основании данных о том, какую следующую страницу открывают пользователи.


Разработка протокола HTTP/2 основывалась на другом протоколе SPDY, который был разработан Google, но компания Google уже объявила о том, что откажется от дальнейшей поддержки SPDY в пользу более многообещающего HTTP/2.

Действительно ли HTTP/2 работает быстрее?


Специалисты из HttpWatch провели несколько тестов и выявили серьезное ускорение от использования HTTP/2.


На скриншоте ниже показана скорость загрузки страницы с использованием HTTP/1.1:


А на этом скриншоте — результат с использованием HTTP/2:


Скорость загрузки выросла на 23%. Эксперты HttpWatch также отмечают, что технология пока не до конца оптимизирована, и ожидают реальное ускорение в районе 30%.


Мы в «Айри» также проводили тестирование в январе-феврале 2016 года, чтобы выяснить, сколько может выиграть реальный сайт после перевода на протокол HTTPS + HTTP/2. В среднем по нескольким сайтам, которые уже прошли предварительную оптимизацию по скорости (сжатие и объединение файлов, сетевая оптимизация), клиентская скорость загрузки выросла на 13-18% только за счет включения HTTP/2.



Стоит упомянуть, что не все эксперименты были столь однозначны. На «Хабре» был описан эксперимент, поставленный командой «Яндекс.Почты». Тестировался протокол SPDY, но напомним, что HTTP/2 разрабатывался на основе SPDY и очень близок к нему в плане используемых методов.



Команда «Яндекс.Почты», протестировав SPDY на части своих реальных пользователей, установила, что среднее время загрузки изменилось всего лишь на 0,6% и не превысило статистической погрешности. Однако специалисты «Яндекс.Почты» обнаружили, тем не менее, положительный момент от использования SPDY. Поскольку число соединений с серверами уменьшилось (это ключевая особенность SPDY и HTTP/2), то нагрузка на серверы заметно сократилась).

Почему важно искать возможности ускорить загрузку страниц сайта?


Джон Мюллер, аналитик из команды Google Webmaster Trends, в своем блоге написал, что наличие на сайте поддержки HTTP/2 не является напрямую ранжирующим фактором в Google. В то же время, скорость загрузки — сама по себе значительный фактор ранжирования, поэтому имеет смысл начать использовать HTTP/2 для SEO-продвижения.


Он добавил, что само по себе ускорение работы сайта должно положительно влиять на ранжирование за счет поведенческих факторов. У более «быстрой» страницы меньше процент отказов — скорее всего, больше пользователей что-то сделают на такой странице, и это повлияет на ранжирование в поиске.


Джон Мюллер также сообщил, что Googlebot скоро начнет поддерживать HTTP/2. И кто знает — может, в будущем наличие HTTP/2 на сайте и станет ранжирующим фактором. Ведь поисковики постоянно меняют алгоритмы.

Какие браузеры уже поддерживают HTTP/2?


Согласно данным CanIUse.com, это следующие браузеры:


  • IE 11 в Windows 10;
  • Edge 12 и 13;
  • Firefox 36 — 45;
  • Chrome 41 — 49;
  • Safari 9;
  • Opera 28 — 34;
  • Safari для iOS 9. 1;
  • Opera 30 для Android;
  • Chrome 46 для Android;
  • Firefox 41 для Android.


По данным CanIUse.com, это составляет порядка 70% трафика.


Понятно, что трафик на их сайт может отличаться от среднего по интернету, но данные говорят о том, что уже достаточно большая доля юзеров может пользоваться браузерами, поддерживающими HTTP/2.

Дает ли что-то HTTP/2 веб-разработчикам?


Да! HTTP/2 позволяет избавиться от целого вагона старых трюков, призванных ускорить загрузку страниц без HTTP/2. Перечислим их:

  • домен-шардинг или использование множественных родственных доменов для скачивания файлов, чтобы позволить установить большее число TCP-соединений;
  • спрайты из картинок — объединение картинок в один файл для снижения числа запросов. Однако такой файл должен сначала загрузиться целиком, прежде, чем будет показана хоть одна картинка. К тому же, обработка больших файлов съедает больше памяти;
  • объединение файлов CSS и Javascript, что также делается для снижения количества запросов, и также увеличивает занимаемую память;
  • инлайн-включения или помещение CSS и Javascript, а иногда даже и картинок внутрь HTML-файла, чтобы снизить число соединений. В то же время приводит к тому, что страница не показывается, пока весь файл не загрузится;
  • домены без cookie: загрузка картинок, CSS и Javascript с другого домена, где не используются cookie.

Как подключить HTTP/2


Эпоха HTTP/2 не за горами, многие браузеры уже поддерживают этот протокол. Его внедрение не требует никаких изменений в самом сайте: не нужно менять URL страниц, не нужно менять ссылки, ставить редиректы, добавлять или менять какую-то разметку или указывать дополнительные данные для Google Search Console или «Яндекс. Вебмастер».


Внедрение HTTP/2 происходит на той части сервера, которая отдает страницы пользователям, то есть на хостинге. Если вы пользуетесь внешним хостингом, то возможно, что ваши страницы уже отдаются в HTTP/2 для всех поддерживаемых браузеров.



Если вы используете собственный виртуальный или выделенный сервер, то поддержка HTTP/2 добавляется на уровне модуля к nginx (дополнительно потребуется установить SSL-сертификат и ключ на сервер): здесь неплохая инструкция.



Проверить поддержку HTTP/2 можно либо через браузерные расширения для Firefox или Chrome, либо через проверку скорости на сайте Айри.рф: в случае поддержки HTTP/2 в результатах проверки будет зеленая плашка [HTTP/2.0].


По материалам:


Блог CloudFlare
Блог Джона Мюллера
Блога Дэниеля Штейнберга
Блога HttpWatch
Блог FastCompany
Блог Айри.рф



Читать по теме: Что нужно знать владельцам сайтов о протоколе HTTP/2


Мнение редакции может не совпадать с мнением автора. Если у вас есть, что дополнить — будем рады вашим комментариям. Если вы хотите написать статью с вашей точкой зрения — прочитайте правила публикации на Cossa.

Поделиться

Поделиться


Телеграм Коссы — здесь самый быстрый диджитал и самые честные обсуждения: @cossaru

📬 Письма Коссы — рассылка о маркетинге и бизнесе в интернете. Раз в неделю, без инфошума: cossa.pulse.is

Протокол

HTTP/2 | Могу ли я использовать… Таблицы поддержки для HTML5, CSS3 и т. д.

Могу ли я использовать

Поиск

?

Протокол HTTP/2

— ПРОЧЕЕ

  • Глобальное использование

    97,16%
    +
    0,45%
    знак равно
    97,61%

Сетевой протокол для передачи контента через Интернет с малой задержкой. Первоначально начинался с протокола SPDY, теперь стандартизированного как HTTP версии 2.

Chrome
  1. 4 — 40: не поддерживается
  2. 41 — 50: Поддерживается
  3. 51 — 107: Поддерживается
  4. 108: поддержан
  5. 109 — 111: поддержано
EDGE
  1. 04% — Supported»>
  2. 6.
  3. 79 — 107: Поддерживается
  4. 108: Поддерживается
SAFARI
  1. 3.1 — 8: Не поддерживается
  2. 9 — 10.1: Частичная поддержка
  3. 11 — 16.1: Поддержка
  4. 15: 2: 2: 40015. : Поддерживается
Firefox
  1. 2 — 35: Not supported
  2. 16% — Supported»> 36 — 52: Supported
  3. 53 — 106: Supported
  4. 107: Supported
  5. 108 — 109: Supported
Opera
  1. 9 — 27: Не поддерживается
  2. 28 — 37: Поддерживается
  3. 38 — 91: Поддерживается
  4. 92: Поддерживается
IE
  1. 5,5 — 10: не поддерживается
  2. 11: Partial Support
. HROME
  • 11: Partial
  • .ROME
  • 11: Partial Dail0021
  • 108: Supported
  • Safari on iOS
    1. 03% — Not supported»> 3.2 — 8.4: Not supported
    2. 9 — 16.1: Supported
    3. 16.2: Supported
    4. 16.3: Supported
    Samsung Internet
    1. 4: Supported
    2. 5–18.0: Поддерживается
    3. 19.0: Поддерживается
    Opera Mini
    1. все: Не поддерживается
    Opera Mobile
    1. 10–9:12.1: Поддерживается5

      0015

    UC Browser для Android
    1. 13,4: поддержан
    Android Browser
    1. 2,1 — 4.4.4: не поддерживается
    2. 00% — Supported»> 108: поддержан
    . Браузер
    1. 13,1: Поддерживается
    Baidu Browser
    1. 13.18: Поддерживается
    Brower
    1. 2,5: Поддержка

    HTP/2SPED. См. также предшественник HTTP/2, протокол SPDY, который объявлен устаревшим и удален из большинства браузеров в пользу HTTP/2.

    Ресурсы:
    Статья в Википедии о HTTP/2
    Тест поддержки браузера

    Руководство по HTTP/2 — Apache HTTP Server версии 2.4

    Доступные языки:  en  |
    да  |
    fr 

    Это практическое руководство по реализации HTTP/2 в Apache httpd. Этот
    функция готова к производству , и вы можете ожидать, что интерфейсы и директивы
    остаются последовательными выпусками.

    • Протокол HTTP/2
    • HTTP/2 в Apache httpd
    • Сборка httpd с поддержкой HTTP/2
    • Базовая конфигурация
    • Конфигурация MPM
    • клиентов
    • Полезные инструменты для отладки HTTP/2
    • Отправка сервера
    • Ранние подсказки

    См.

    также

    • mod_http2
    • Комментарии

    HTTP/2 — это эволюция самого успешного в мире протокола прикладного уровня, HTTP.
    Основное внимание уделяется более эффективному использованию сетевых ресурсов. Это не меняет основы
    HTTP, семантика. Есть еще запросы, ответы, заголовки и все такое. Так что если
    вы уже знаете HTTP/1, вы знаете 95% также о HTTP/2.

    Много написано о HTTP/2 и о том, как он работает. Наиболее нормативным является, конечно,
    его RFC 7540
    (также доступно в более удобочитаемом формате YMMV).
    Итак, там вы найдете гайки и болты.

    Но, как и в случае с RFC, читать сначала не очень хорошо. Лучше сначала понять
    что что-то хочет сделать, а затем прочитайте RFC о том, как это делается. Много
    лучший документ для начала объясняется http2
    Дэниел Стенберг, автор curl. Он доступен в
    постоянно растущий список языков!

    Слишком длинно, не читал: есть несколько новых терминов и ошибок, которые необходимо учитывать при чтении этого документа:

    • HTTP/2 — это двоичный протокол , в отличие от простого HTTP 1. 1 текст. Последний предназначен для чтения человеком (например, для прослушивания сетевого трафика), а первый — нет. Больше информации в официальном вопросе FAQ.
    • h3 — это HTTP/2 через TLS (согласование протокола через ALPN).
    • h3c — это HTTP/2 через TCP.
    • Кадр — это наименьшая единица связи в соединении HTTP/2, состоящая из заголовка и последовательности октетов переменной длины, структурированных в соответствии с типом кадра. Больше информации в разделе официальной документации.
    • Поток — это двунаправленный поток кадров в соединении HTTP/2. Соответствующая концепция в HTTP 1.1 — это обмен сообщениями запрос/ответ. Больше информации в разделе официальной документации.
    • 90 190 HTTP/2 может запускать 90 233 нескольких потоков 90 234 данных по одному и тому же TCP-соединению, избегая классического заголовка HTTP 1.1, блокирующего медленный запрос, и избегая повторного создания TCP-соединений для каждого запроса/ответа (KeepAlive исправила проблему в HTTP). 1.1, но не решил ее полностью).

    Протокол HTTP/2 реализуется собственным модулем httpd, метко названным
    мод_http2 . Он реализует полный набор
    функций, описанных в RFC 7540, и поддерживает HTTP/2 через открытый текст (http:), как
    а также безопасные (https:) соединения. Вариант с открытым текстом называется ‘ h3c ‘,
    безопасный ‘ h3 ‘. Для h3c позволяет прямой
    mode и Upgrade: через первоначальный запрос HTTP/1.

    Одной из особенностей HTTP/2, предлагающей новые возможности для веб-разработчиков, является
    Пуш сервера. См. этот раздел о том, как ваше веб-приложение
    может использовать его.

    mod_http2 использует библиотеку nghttp2
    как база его реализации. Чтобы собрать mod_http2 , вам нужна как минимум версия 1.2.1
    libnghttp2 установлен в вашей системе.

    Когда вы ./configure исходное дерево Apache httpd, вам нужно указать
    --enable-http2 ‘ в качестве дополнительного аргумента для запуска сборки модуля.
    Если ваш libnghttp2 находится в необычном месте (что бы это ни было на вашем
    операционная система), вы можете объявить его местоположение с помощью ‘ --with-nghttp2=
    на настроить .

    Хотя это должно помочь большинству, это люди, которые могут предпочесть статический
    связано nghttp2 в этом модуле. Для них опция --enable-nghttp2-staticlib-deps
    существуют. Это работает очень похоже на то, как кто-то статически связывает openssl с mod_ssl .

    Говоря о SSL, вы должны знать, что большинство браузеров будут использовать HTTP/2 только на https:
    URL-адреса, поэтому вам нужен сервер с поддержкой SSL. Но не только это, вам понадобится библиотека SSL
    который поддерживает расширение ALPN . Если OpenSSL — это библиотека, которую вы используете, вам нужно
    по крайней мере версия 1.0.2.

    Если у вас есть httpd , построенный с mod_http2 , вам нужно немного
    базовая конфигурация для того, чтобы он стал активным. Во-первых, как и в случае с каждым модулем Apache,
    заключается в том, что вам нужно загрузить его:

     LoadModule http2_module modules/mod_http2.so 

    Вторая директива, которую вам нужно добавить в конфигурацию вашего сервера, это

     Protocols h3 http/1.1 

    предпочтительный протокол на вашем сервере
    соединения. Если вы хотите включить все варианты HTTP/2, вы просто пишете:

     Протоколы h3 h3c http/1.1 

    В зависимости от того, где вы поместите эту директиву, она влияет на все соединения или только на
    на определенный виртуальный хост. Вы можете вложить его, например:

     Протоколы http/1.1
    <Виртуальный хост...>
        Имя сервера test.example.org
        Протоколы h3 http/1.1
     

    Это разрешает только HTTP/1 для соединений, за исключением соединений SSL с test.example.org
    которые предлагают HTTP/2.

    Выберите надежный SSLCipherSuite

    SSLCipherSuite необходимо настроить с
    надежный набор шифров TLS. Текущая версия mod_http2 не применяет никаких шифров, но большинство
    клиенты так делают. Указание браузеру на сервер с поддержкой h3 с неподходящим
    Набор шифров заставит его просто отказаться и вернуться к HTTP 1.1. Это распространенная ошибка
    это делается при настройке httpd для HTTP/2 в первый раз, поэтому помните об этом, чтобы избежать
    долгие сеансы отладки! Если вы хотите быть уверены в выборе набора шифров, пожалуйста, избегайте
    те, которые перечислены в списке отклонения HTTP/2 TLS.

    Порядок упомянутых протоколов также имеет значение. По умолчанию первым является
    наиболее предпочтительный протокол. Когда клиент предлагает несколько вариантов, наиболее подходящий
    выбрано левое. В

     Protocols http/1.1 h3 

    наиболее предпочтительным протоколом является HTTP/1, и он всегда будет выбран, если только
    клиент только поддерживает h3. Поскольку мы хотим использовать HTTP/2 для клиентов,
    поддержите его, лучше заказать

     Протоколы h3 h3c http/1. 1 

    При заказе есть еще один нюанс: у клиента тоже есть свои предпочтения. Если
    вы хотите, вы можете настроить свой сервер для выбора протокола, наиболее предпочтительного для
    клиент:

     ProtocolsHonorOrder Off 

    делает заказ вы написали протоколы неактуальные и только клиентские
    заказ решит.

    И последнее: протоколы, которые вы настраиваете, не проверяются на правильность
    или правописание. Можно упомянуть несуществующие протоколы, так что незачем
    охранять Протоколы с любым
    проверок.

    Дополнительные советы по настройке см.
    раздел модулей о размерах и
    как управлять несколькими хостами с одним и тем же сертификатом.

    HTTP/2 поддерживается во всех многопроцессорных модулях, поставляемых с httpd. Однако, если
    вы используете префорк mpm, будут серьезные ограничения.

    В prefork , mod_http2 будет обрабатывать только один запрос за раз
    за соединение. Но клиенты, такие как браузеры, будут отправлять много запросов одновременно.
    Если один из них требует много времени для обработки (или является длительным опросом), другие запросы будут
    ларек.

    mod_http2 по умолчанию не будет обходить это ограничение. Причина в том, что
    prefork сегодня выбирается только в том случае, если вы запускаете механизмы обработки, которые не
    подготовлен для многопоточности, например. произойдет сбой при более чем одном запросе.

    Если ваша установка может справиться с этим, настройка события mpm в настоящее время
    лучший (если поддерживается на вашей платформе).

    Если вы действительно застряли с префорком и хотите получить несколько запросов,
    вы можете настроить h3MinWorkers сделать
    это возможно. Однако, если он сломается, обе части принадлежат вам.

    Почти все современные браузеры поддерживают HTTP/2, но только через соединения SSL: Firefox (v43),
    Chrome (v45), Safari (начиная с v9), iOS Safari (v9), Opera (v35), Chrome для Android (v49)
    и Internet Explorer (v11 в Windows10) (источник).

    Перечислены другие клиенты, а также серверы
    на вики Реализации,
    среди них реализации для c, c++, common lisp, dart, erlang, haskell, java, nodejs, php,
    Python, Perl, Ruby, Rust, Scala и Swift.

    Несколько небраузерных клиентских реализаций поддерживают HTTP/2 через открытый текст, h3c.
    наиболее универсальным является завиток.

    Первым инструментом, о котором следует упомянуть, конечно же, является curl. Пожалуйста, убедитесь, что
    ваша версия поддерживает HTTP/2, проверяя его Features :

     $ curl -V
        curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
        Протоколы: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
        Возможности: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP  HTTP2 
         

    Домашние заметки для Mac OS

    brew install curl —with-openssl —with-nghttp2

    И для действительно глубокой проверки wireshark.

    В пакет nghttp2 также входят клиенты, такие как:

    • nghttp — полезны для визуализации кадров HTTP/2 и лучшего понимания протокола.
    • h3load — полезно для стресс-тестирования вашего сервера.

    Chrome предлагает подробные журналы HTTP/2 для своих подключений через
    специальная страница net-internals. Существует также
    интересное расширение для Chrome
    и Firefox
    чтобы визуализировать, когда ваш браузер использует HTTP/2.

    Протокол HTTP/2 позволяет серверу отправлять ответы клиенту, которых он никогда не
    попросил о. Тон разговора таков: «вот просьба, чтобы вы
    никогда не отправлялся и ответ на него скоро придет…»

    Но есть ограничения: клиент может отключить эту функцию и
    сервер может только когда-либо PUSH на запрос, который пришел от клиента.

    Цель состоит в том, чтобы позволить серверу отправлять ресурсы клиенту, который
    скорее всего, ему понадобится: ресурс css или javascript, принадлежащий html
    страница, которую запросил клиент. Набор изображений, на который ссылается css и т. д.

    Преимущество для клиента заключается в том, что он экономит время на отправку запроса, который
    может варьироваться от нескольких миллисекунд до полсекунды, в зависимости от того, где
    глобус оба расположены. Недостатком является то, что клиент может быть отправлен
    вещи, которые уже есть в его кеше. Конечно, HTTP/2 допускает досрочную отмену.
    таких запросов, но все же есть ресурсы впустую.

    Подводя итог: не существует ни одной хорошей стратегии, как наилучшим образом использовать это
    особенность HTTP/2, и все еще экспериментируют. Итак, как вы экспериментируете
    с ним в апаче httpd?

    mod_http2 проверить заголовок ответа на наличие заголовков Link
    в определенном формате:

     Ссылка ;rel=preload, ; rel=preload 

    Если соединение поддерживает PUSH, эти два ресурса будут отправлены
    клиент. Как веб-разработчик, вы можете установить эти заголовки непосредственно в
    ваш ответ приложения или вы настраиваете сервер через

      html>
        Заголовок добавить ссылку ";rel=preload"
        Заголовок добавить ссылку ";rel=preload"
     

    Если вы хотите использовать предварительную загрузку ссылок без запуска PUSH, вы
    можно использовать параметр nopush , как в

     Link ;rel=preload;nopush 

    , или вы можете полностью отключить PUSH для своего сервера с помощью директивы

     h3Push Off 

    И еще:

    Модуль будет вести дневник того, что было PUSHed для каждого соединения
    (в основном, хэши URL-адресов) и не будет НАЖАТЬ один и тот же ресурс дважды. Когда
    соединение закрывается, эта информация отбрасывается.

    Некоторые думают о том, как клиент может сообщить серверу, что он
    уже есть, поэтому PUSH для этих вещей можно избежать, но это все
    очень экспериментальный прямо сейчас.

    Еще один экспериментальный проект, реализованный в mod_http2
    это
    Поле заголовка Accept-Push-Policy, где клиент может для каждого запроса определить
    какие PUSH-сообщения он принимает.

    PUSH может не всегда запускать ожидаемый запрос/ответ/производительность.
    надеется на. В Интернете можно найти различные исследования по этой теме, которые объясняют
    преимущества и недостатки и влияние различных характеристик клиента и сети
    финальный продукт. Например: только потому, что сервер PUSH на ресурс, не означает
    браузер будет фактически использовать данные.

    Основное, что влияет на ответ, который был отправлен PUSH, — это запрос, который был
    смоделированный. URL-адрес запроса для PUSH предоставляется приложением, но где
    заголовки запросов? Например, будет ли PUSH запрашивать accept-language
    заголовок и если да, то с каким значением?

    Apache рассмотрит исходный запрос (тот, который инициировал PUSH) и скопирует
    следующие заголовки для PUSH-запросов: user-agent , accept ,
    accept-encoding , accept-language , cache-control .

    Все остальные заголовки игнорируются. Файлы cookie также не будут скопированы. ПРОДВИЖЕНИЕ ресурсов
    которые требуют присутствия файла cookie, не будут работать. Это может стать предметом обсуждения. Но
    если это более четко не обсуждается с браузером, давайте ошибемся в сторону осторожности и
    не показывать cookie там, где они обычно не видны.

    Альтернативой PUSHing ресурсов является отправка Связать заголовки с
    клиент еще до того, как ответ будет готов. При этом используется функция HTTP под названием «Ранние подсказки» и
    описан в RFC 8297.

    Чтобы использовать это, вам необходимо явно включить его на сервере с помощью

     h3EarlyHints на 

    (по умолчанию он не включен, так как некоторые старые браузеры отключались при таких ответах.)

    Если эта функция включена, вы можете использовать директиву h3PushResource для
    запускать ранние подсказки и PUSH ресурсов:

     <Расположение /xxx.html>
    h3PushResource /xxx.css
    h3PushResource /xxx.

    This entry was posted in Популярное