Подтвердить что ты не робот

Почему оптимизация пакетов больше не вызывает беспокойства в HTTP/2

Я читал в комплекте частей документации systemjs, что оптимизация пакетов, больше не требуемая в HTTP/2:

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

Мои вопросы:

  • Это означает, что нам не нужно думать о связывании сценариев или других ресурсов при использовании HTTP/2?
  • Что такое HTTP/2, что делает эту функцию включенной?
4b9b3361

Ответ 1

HTTP/2 поддерживает "push-сервер", который устаревает связывание ресурсов. Итак, да, если вы используете HTTP/2, объединение фактически будет анти-шаблоном.

Для получения дополнительной информации проверьте это: https://www.igvita.com/2013/06/12/innovating-with-http-2.0-server-push/

Ответ 2

Оптимизация связывания была введена как "лучшая практика" при использовании HTTP/1.1, поскольку браузеры могли открывать только ограниченное количество подключений к определенному домену.

Типичная веб-страница имеет 30+ ресурсов для загрузки для рендеринга. С помощью HTTP/1.1 браузер открывает 6 подключений к серверу, запрашивает 6 ресурсов параллельно, дожидается загрузки, затем запрашивает другие 6 ресурсов и т.д. (Или, конечно, какой-то ресурс будет загружен быстрее других, и это соединение может быть повторно использован раньше, чем другие для другого запроса). Дело в том, что с HTTP/1.1 вы можете получить не более 6 невыполненных запросов.

Чтобы загрузить 30 ресурсов, вам понадобится 5 обращений, что добавит много латентности для рендеринга страницы.

Чтобы сделать рендеринг страницы быстрее, с помощью HTTP/1.1 разработчику приложения пришлось сократить количество запросов на одну страницу. Это приводит к "передовым методам", таким как клонирование домена, встраивание ресурсов, написание образов, объединение ресурсов и т.д., Но на самом деле это просто умные взломы для обхода ограничений протокола HTTP/1.1.

С HTTP/2 вещи разные, потому что HTTP/2 мультиплексируется. Даже без HTTP/2 Push функция мультиплексирования HTTP/2 делает все эти хаки бесполезными, потому что теперь вы можете запрашивать сотни ресурсов параллельно с использованием одного TCP-соединения.

С помощью HTTP/2 для тех же 30 ресурсов потребуется всего одна обратная связь, которая будет загружена, что даст вам 5-кратное увеличение производительности в этой операции (что обычно доминирует над временем рендеринга страницы).

Учитывая, что тенденция веб-контента должна быть богаче, у него будет больше ресурсов; чем больше ресурсов, тем лучше HTTP/2 будет работать в отношении HTTP/1.1.

Помимо мультиплексирования HTTP/2 у вас есть HTTP/2 Push.

Без HTTP/2 Push браузер должен запросить основной ресурс (страница *.html), загрузить его, проанализировать, а затем организовать загрузку 30 ресурсов, на которые ссылается основной ресурс.

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

На самом деле функция мультиплексирования HTTP/2 позволяет забыть о сбое ресурсов.

Вы можете посмотреть slides сеанса HTTP/2, который я дал на разных конференциях.

Ответ 3

Связывание по-прежнему полезно, если ваш веб-сайт

  • Работает по HTTP (HTTP 2.0 требует HTTPS)
  • Хостинг сервером, который не поддерживает ALPN и HTTP 2.
  • Требуется для поддержки старых браузеров (чувствительные и устаревшие системы).
  • Требуется для поддержки HTTP 1 и 2 (изящная деградация)

Есть две функции HTTP 2.0, которые делают устаревшее связывание:

  • HTTP 2.0 Мультиплексирование и Concurrency (позволяет запрашивать несколько ресурсов по одному TCP-соединению)
  • HTTP 2.0 Server Push (нажатие на сервер позволяет серверу упреждающе нажимать ответы, которые, по его мнению, клиент будет необходимо в кеш клиента)

PS: Объединение - это не единственный метод оптимизации, который будет устранен в результате восстания функций HTTP 2.0. Особенности, такие как написание изображений, очертание домена и вложение ресурсов > (Встраивание изображений через URI данных).

Как HTTP 2.0 влияет на существующие методы веб-оптимизации

Ответ 4

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

Но объединение сегодня заключается не только в минимизации количества запросов между клиентом и сервером. Два других важных аспекта:

  • Tree Shaking: Современные связки, такие как WebPack и Rollup, могут исключить неиспользуемый код (даже из сторонних библиотек).
  • Сжатие: большие пакеты JavaScript могут быть лучше сжаты (gzip, zopfli...)

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

Две хорошие сообщения по теме:

Оба этих сообщения приходят к выводу, что "строить процессы здесь, чтобы остаться".