Как веб-разработчик может установить приоритет ресурсов в http2?

Например, я хочу как можно быстрее загрузить файлы jquery, bootstrap и handlebars javascript. bootstrap зависит от jquery, поэтому имеет смысл завершить загрузку после jquery. Как я могу установить http2 приоритетов для достижения этой цели?


person Phil C    schedule 14.12.2015    source источник
comment
Я не думаю, что это возможно, но если бы это было так, можете ли вы описать, как вы разбудите bootstrap, как только jquery загрузится?   -  person dsign    schedule 14.12.2015
comment
Я надеялся, что модель дерева зависимостей http2 позволит мне указать порядок выполнения   -  person Phil C    schedule 15.12.2015
comment
Нет, эта древовидная модель устанавливается браузером с использованием собственной семантики. Однако серверу не нужно соблюдать его. Но подумайте над моим вопросом...   -  person dsign    schedule 15.12.2015
comment
В настоящее время мы используем для этой цели requirejs, например: require.config({ пути: { jquery: ['//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min'], bootstrap: '/common/components/bootstrap-3.3.1/ js/bootstrap.min'}, shim: { bootstrap: { deps: [jquery] } } }); требуют(['jquery', 'бутстрап'],   -  person Phil C    schedule 15.12.2015
comment
Ага. Что ж, RequireJS идеально подходит для развертывания HTTP/2 PUSH, мы использовали его несколько раз. Затем наш сервер устанавливает приоритеты на основе dag зависимостей, которые создают файлы RequireJS. Интересная вещь с вашим вопросом заключается в том, чтобы таким же образом расставить приоритеты без PUSH-выборки. Я просто пишу о приоритетах здесь, (частично загрузил версия только для этого комментария). Но вы приводите очень интересный момент...   -  person dsign    schedule 15.12.2015


Ответы (2)


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

На стороне сервера вы можете использовать push-уведомление сервера, чтобы предлагать ресурсы клиенту до того, как клиент получит возможность запросить их, но это также необходимо делать с осторожностью, поскольку, если клиент, вероятно, уже имеет (кэшировал) push-уведомление является пустой тратой полосы пропускания (хотя и ограничивается не более чем начальным размером окна для новых потоков).

person Daniel Stenberg    schedule 15.12.2015
comment
Я согласен с тем, что браузер будет лучше знать о таких вещах, как прокрутка пользователя. Я искал способ в исходном html-файле указать разные приоритеты для скриптов. Я хочу, чтобы мои скрипты загружались асинхронно, чтобы не блокировать рендеринг. Некоторые сценарии, такие как аналитика и чат, менее важны, чем другие. Могу ли я установить их приоритеты ниже в html? - person Phil C; 16.12.2015
comment
Насколько мне известно, сейчас нет стандартного способа сделать это. Может со временем что-то создастся. - person Daniel Stenberg; 16.12.2015

«Я хочу, чтобы мои скрипты загружались асинхронно, чтобы не блокировать рендеринг. Некоторые скрипты, такие как аналитика и чат, менее важны, чем другие. Могу ли я установить их приоритеты ниже в html?»

Да, вы можете поместить теги script в нижнюю часть тела, чтобы предотвратить блокировку рендеринга.

person nephilim    schedule 29.11.2017