Почему много HTTP запросов — это плохо?

Всем добрый день. Подскажите, почему принято собирать css и js в бандлы, вместо того, чтобы подключать все компоненты по отдельности напрямую на каждую страницу?
Я знаю что много http-запросов это плохо, что мол тормозит сайт, блокируется загрузка контента и т.п., но при загрузке огромного бандла...
Можете рассказать поподробнее в чём конкретно заключается проблема?
Слышал также про http2 и что мол он лучше работает с множеством запросов. Если кто в курсе вещей, то расскажите почему все ещё пользуются бандлами.
  • Вопрос задан
  • 1433 просмотра
Решения вопроса 1
Griboks
@Griboks
Это всеобщее заблуждение, пораждённое веб-макаками. Мол, нафига нам что-то оптимизировать и вообще думать о низкоуровневых вещах, когда можно тупо забандлить всё в один файл.

Нужно управлять ресурсами, оптимизировать их и кешировать. Правда в том, что много запросов - это хорошо, но они должны быть построены определённым образом и синхронизированы между собой. Если кратко, то:
1) загружается бандл с базовыми ресурсами, необходимыми для отображения страницы
2,3,4) параллельно в фоне асинхронно загружаются вспомогательные бандлы для красоты и хотелок дизайнеров+маркетологов+шпионов+рекламы * (10 мб на страницу, ага, ага, верю)
5) некоторые бандлы загружаются по требованию

* все хотелки в идеале следует послать "на доработку", но есть риск увольнения

Техчасть
Запрос даёт оверхед, читайте + 0,3 секунды к времени загрузки страницы. 10 запросов = +3с, что уменьшает вероятность удержания пользователя. http2, ws и иже с ними дают оверхед не на отдельный запрос, а на целый бндл за раз, т.е. 10 запросов = +0,3 с.
Браузер рендерит страницу после загрузки, т.е. эти ваши +3с превращаются в +10 с с учётом динамической мишуры и прочих гениальный идей программистов, которые не в курсе про механику работы браузера.
Решение: грузить основной бандл через http2 → рендерить → грузить остальное, не мешая наслаждаться очередным шедевром сайтостроения пользователю
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Тебе когда надо достать из холодильника 5 бутылок пива, что проще - открыть холодильник, взять 5 бутылок пива и закрыть холодильник, или открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник?
Ответ написан
profesor08
@profesor08 Куратор тега CSS
Если файлов парочка, то значения не имеет. Если файлов много, то все зависит от браузера, сервера и того, сколько они могут передать файлов одновременно. Но не стоит на это сильно рассчитывать, обычно этого недостаточно.
Пихать все в один бандл тоже не совсем здравая идея, тогда будет загружаться весь код единоразово, и его объем будет не малым. Кроме того будет загружен код, который не нужен на данный странице сайта. Зачем грузить все, если нужен только клик по кнопки?
Из этого всего вытекает разумное решение, загружать маленькие кусочки только тогда, когда они нужны.
Ответ написан
vabka
@vabka
Токсичный шарпист
Да, http2 действительно лучше работает с несколькими запросами, но http2 не у всех доступен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы