Могу ли я использовать pu / 1001 * активы с HTTP / 2 Pu sh до первоначального ответа? - PullRequest
0 голосов
/ 08 января 2020

У меня есть веб-страница с JS, CSS и ресурсами шрифта. Страница должна выполнить тяжелую обработку, прежде чем определить код статуса HTTP и заголовки для своего ответа.

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

  1. Клиентские запросы index.html
  2. Сервер отправляет PUSH_PROMISES для script.js, styles.css и font.woff2
  3. Сервер отправляет заголовки HTTP и данные для указанных выше активов
  4. Сервер выполняет тяжелую обработку, чтобы определить index.html ответ ...
  5. Сервер отправляет заголовки HTTP и данные для index.html

Возможно ли это? Исходя из моего понимания Server Pu sh в HTTP / 2 spe c, это представляется возможным. Тем не менее, я впервые погружаюсь в HTTP / 2 spe c, поэтому я определенно мог что-то упустить.

Ответы [ 2 ]

1 голос
/ 09 января 2020

То, что вы хотите сделать, возможно, но детали того, как это сделать, зависят от выбранной вами технологии.

Ваше приложение должно иметь явные API-интерфейсы HTTP / 2 для ресурсов pu sh клиенту.

Например, если вы используете Java и Servlet, вам нужно использовать Servlet 4.0, который ввел API PushBuilder, чтобы явно использовать активы * sh, и это можно сделать независимо от ответа основного ресурса, как вы бы хотели.

Я уверен, что другие технологии, такие как NodeJS, имеют схожие API, которые вы можете использовать, но вы должны проверить с помощью технология, которую вы используете.

1 голос
/ 09 января 2020

Да, это полностью разрешено, и это возможно в Apache, например, как подробно описано здесь: https://icing.github.io/mod_h2/earlier.html

Или здесь приведен пример с узлом: https://github.com/bazzadp/http2-in-action/blob/master/Listing%205.3/app.js

Другие серверы также могут это разрешать, но многие серверы используют заголовки HTTP с предварительной загрузкой в ​​качестве сигналов для pu sh, поэтому необходимо отправить ответ, чтобы показать заголовок.

Дополнительный 103 Ранний ответ Hint был определен , который может быть отправлен обратно с этими заголовками на раннем этапе, пока обрабатывается ваш основной ответ, однако поддержка этого плохая, не в последнюю очередь, потому что некоторые реализации будут сбиты с толку, чтобы вернуться два ответа (103, а затем 200).

...