2016-05-31 1 views
22

Я начинаю новый проект, и я пытаюсь двигаться вперед, думая об этом. Я использовал Browserify в прошлом. Для моего нового проекта я хотел бы использовать либо Webpack, Rollup, либо SystemJS. Webpack выглядит, безусловно, самым зрелым с множеством потрясающих функций.Какова ценность использования Webpack с HTTP/2

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

+4

Я нахожу его несколько юмористическим, если мы суффиксом наших запросов на мнения с «Я хочу факты» (якобы факты о мнениях). «Оффтопический» патруль оставляет это. Хорошо, что ты @ баттманц, лукавая собака! –

+0

@ ZephyrPellerin Эй, я должен ответить на любой вопрос, как могу! :) – battmanz

ответ

15

TL; DR

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

Длинная версия:

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

В кадре SETTINGS, отправленном при подключении, большинство серверов будут ограничивать количество параллельных потоков до разумного значения, например 100. Это означает, что вы не можете выпустить более 100 одновременных запросов, что является проблемой, если у вас есть например, большое разделенное приложение React с сотнями js-файлов.

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

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

+4

Не говоря уже о том, что пакет agressiveSplittingPlugin для веб-страницы 2: см. Https://medium.com/webpack/webpack-http-2-7083ec3f3ce6#.zdo4juvgo –

+3

И использование для AgressiveSplittingPlugin https://github.com/webpack/webpack/tree/ ведущий/примеры/http2-агрессивное расщепление –

Смежные вопросы