Как стать автором
Обновить

Комментарии 10

Было бы интересно увидеть графики нагрузки не только для фронтенда, а еще и для сервера: насколько изменилась его загрузка, объем передаваемого трафика?
Из графиков я вижу что среднее время для «Push Everything» и «Inline» — практически одинаковы.
Зато с кэшированием — большие вопросы при использовании Push. Обновился css-файл — но в кэше браузера он есть. Если при HTTP/1 я могу нажать Ctrl-F5 и обновить страничку без кэша, то будет ли работать такой трюк здесь? Будет ли происходить push обновленных ресурсов или для этого надо дополнительные настройки делать?
Будет ли Push означать что исходящий трафик сервера повысится?
Ну и, коль уж статья претендует на «исчерпывающее руководство», следует вспомнить ещё один метод push — средствами самого веб-севера, когда в конфигурации виртуального хоста можно описать список проталкиваемых ресурсов. В частности, это позволяет реализовать H2O посредством встроенного скриптинга на mruby.

Есть отличное решение этой проблемы:


  • Клиент-браузер отсылает серверу запрос некой страницы.
  • Сервер перед отдачей страницы присылает заголовки (даже в HTTP'1). В этих заголовках можно прислать список ресурсов, на которые ссылается страница. Причём с указанием — ожидается ли безусловная закачка этих ресурсов, или ссылка срабатывает в зависимости от действий пользователя. И для каждого ресурса указывается информация, нужная для его кэширования (т.е. время последнего изменения).
  • Клиент-браузер получает в заголовках список ресурсов, а дальше сам решает, что ему запросить.
А где тут push? И если я хочу все загрузить снова — надо ли браузеру, как и прежде, на каждый ресурс отправлять отдельный запрос?

Полноценного push'а нет, ибо он не нужен. Есть push в виде "Сервер в HTTP-заголовках присылает список ресурсов, на которые ссылается страница. И при каждом — информация о кэшировании.", на которые браузер при желании делает запросы. А текстовый баузер — не запрашивает ни стили, ни картинки.

НЛО прилетело и опубликовало эту надпись здесь
Печальная ситуация с nginx. Есть ли информация, когда он будет поддерживать push?
А что мешает отправлять в заголовках на backend-е?
HTTP/2 server push — это не просто дополнительные заголовки. Nginx должен разбирать заголовки ответа и отправлять «проталкиваемые» ресурсы в ответ на запрос клиента.
Крутая штука! Думаю будет интересно провести тесты на скорость на универсальных приложениях React и Angular.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий