Welcome! Log In Create A New Profile

Advanced

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin
May 03, 2020 05:04PM
Hello!

On Wed, Apr 29, 2020 at 01:26:27PM -0400, gz wrote:

> > > Востребованные ресурсы из push-кэша переходят в основной и будут
> > > использованы для следующих страниц.
> > > Клиенты умеют отказываться от проталкиваемых ресурсов, уже имеющихся
> > в
> > > кэше.
> > > В крайнем случае несложно пометить клиента стандартным способом
> > через
> > > cookie.
> >
> > Проблема в том, что даже отказ от push-ресурсов - это нагрузка как
> > на сервер, так и на канал. И статистика как бы говорит нам, что в
> > среднем эти накладные расходы - больше, чем польза.
>
> Я таковой статистикой не располагаю.

Ссылку на статистику я привёл. Если вы не располагаете другой -
вероятно, другой и нет.

> Но предполагаю, что клиенту отказаться от push'а проще, чем сделать
> дополнительный запрос к ресурсу.

По ресурсам "получить push" и "сделать дополнительный запрос и
получить на него ответ" - строго одно и то же. Разница - только во
времени, полученный push будет доступен чуть раньше, что в хорошем
случае немного сократит время до показа страницы. А в плохом -
потребует передачи по сети дополнительных данных (начала push'а и
его отмены) и приведёт к увеличению времени до показа страницы.
Именно на баланс "хороших" и "плохих" случаев и стоит смотреть.

> > Что будет конкретно в вашем случае - зависит, безусловно, от
> > конкретной нагрузки и от того, насколько "в крайнем случае
> > несложно" вам будет избежать лишних push'ей. Но, повторюсь, в
> > среднем - будет хуже, потому что "в крайнем случае" никто не
> > заморачивается. Именно поэтому я начал с вопроса пробовали ли вы
> > тестировать, что получится. Подозреваю, что от банального
> > перекладывания существующих <link rel="preload"> в push'ы -
> > станет только хуже.
>
> Да, я понял Вашу точку зрения.
> Да, узкого эксперимента я не проводил.
>
> >
> https://github.com/httpwg/wg-materials/blob/gh-pages/ietf102/chrome_push.pdf
> > >
> > > Не совсем понимаю какие выводы делают авторы.
> > >
> > > Предлагают работать над приоритезацией (которая и так корректная, и
> > > регулируется preload'ом), использовать экспериментальный QUIC,
> > поддержики
> > > которого толком нет.
> >
> > Авторы ясно и однозначно показывают, что server push - в среднем
> > вредит, и в большинстве случаев лишь способ выстрелить себе в
> > ногу. И предлагают работать над другими технологиями,
> > потенциально более полезными.
> >
> > Тут важно понимать, что речь идёт про взгляд разработчиков
> > браузера, и рассказывалось это всё на HTTP working group, то есть
> > в рамках встречи людей, занимающихся разработкой протокола.
>
> Из Ваших соображений и трактовке вышеприведённого исследования складывается
> впечатление, что даже разработчики протокола не донца понимают зачем push
> нужен.
> При том, что не только они описали его в протоколе, но и сторонние
> разработчики реализовали поддержку push'а клиентах и нескольких серверах.

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

Что до "реализовали поддержку push'а", то вот мы - всегда считали,
что полезность push'а, мягко говоря, преувеличена. Но, тем не
менее, вынуждены были реализовать, просто мотому, что пользователи
читают маркетинговые материалы, рассказывающие о новом красивом
протоколе HTTP/2 и его замечательных возможностях. А понимать,
какие недостатки есть у этих замечательных возможностей - не
пытаются.

> > (Ну и да, про приоритезацию - смешно. Нет, это не про preload,
> > это, как я понимаю, про приоритеты в рамках HTTP/2. Там самолёт с
> > бассейном и джакузи запроектирован в рамках стандарта, корректности
> > ждать не приходится.)
>
> Я о текущей примитивной приоретизации.
> Сомневаюсь, что когда-нибудь появятся инстументы точного управления ею,
> браузеры всё равно будут вынуждены использовать указания как рекомендацию.

Приоритизация в рамках стандарта HTTP/2 - это вполне конкретная
вещь, и именно она и упоминается в соответствующем докладе. И с
ней проблемы, именно потому она там и упоминается.

> > > Я прекрасно понимаю, что push — не панацея, и хотел попробовать на
> > практике
> > > проталкивание критических ресурсов, которые в любом случае
> > приоритетны и
> > > будут загружены для отрисовки.
> >
> > Именно с этого я и начал: попробуйте на практике на отдельных
> > страницах, без попыток вытаскивать версии ресурсов через SSI и вот
> > этого всего. Получите статистику, сравните.
> >
> > Сейчас же вы пришли и убеждаете разработчиков, что вам надо,
> > потому что оно точно будет лучше, но тестировать вы ничего не
> > тестировали и не хотите.
>
> Где именно и кого я в чём-то убеждал и убеждал в том, что мне нужно?
> Я задал вопрос о планах.

И получили на него ответ. А равно рекоменацию о том, с чего
начать, если вы вдруг считаете, что вам, тем не менее, надо.

Но почему-то пытаетесь спорить, убеждая меня в том, что статистика
не нужна, а надо слепо верить в теоретические рассуждения в
интернете.

> А учитывая, что использовать саму директиву http2_push затруднительно — один
> ресурс за раз, невозможность использования в if — и предвидя рекомендацию
> использовать http2_push_preload, я рассказал о том, в какую сторону пошёл и
> что уже попробовал сделать своими силами, и о том, какие возможности могли
> бы помочь в решении задачи.

Директив http2_push может быть сколько угодно. Если после
интерполяции переменных парамером оказалась пустая строка -
директива не делает ничего. То есь если хочется push'ить ресурсы
условно, то это можно сделать элементарно:

set $push "";
if ($want_push_css) {
set $push "/css/main.css";
}

http2_push $css;

Аналогично можно push'ить произвольное количество ресурсов, если
это нужно. Достаточно написать соответствующий конфиг.

> > Так это не работает. Придёте со
> > стастикой, явно показывающей плюсы - мы задумаемся над тем, как
> > облегчить вам жизнь в конфигурации с SSI. Пока же из статистике
> > есть вот только ссылка выше, из которой явно следует, что делать
> > что-либо для лучше поддержки HTTP/2 push - в среднем бессмысленно.
>
> То, о чём я рассказываю и есть эксперимент.
> Проще внедрить это на dev- или даже production-версии сайта, чем готовить
> узкие эксперименты из двух страниц.
> В случае pdocution'а можно прогнозировать значимое изменение в статистике
> загрузки страниц, в том числе по данным браузеров — в той же Метрике, Google
> Console или PageSpeed Insights.
>
> Простой эксперимент, конечно, имеет право на жизнь, но это пара страниц и
> несколько доступных браузеров и инструментов.

Ну вот для эксперимента - у вас есть все ресурсы, начиная от
собственно отдачи страниц с бекенда напрямую, без кеширования
SSI-кусков, с явно проставленными заголовками Link, и заканчивая
явной выдачей необходимых push'ей с помощью директивы http2_push.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin April 27, 2020 11:00AM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz April 27, 2020 02:44PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin April 27, 2020 03:18PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz April 27, 2020 04:29PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

S.A.N April 27, 2020 07:19PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz April 29, 2020 01:14PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

S.A.N April 29, 2020 07:33PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz May 24, 2020 08:41PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Илья Шипицин April 27, 2020 04:42PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin April 27, 2020 08:10PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz April 29, 2020 01:09PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Илья Шипицин April 29, 2020 01:42PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

ALex_hha April 29, 2020 02:40PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz May 24, 2020 10:19PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Evgeniy Berdnikov April 29, 2020 03:02PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Илья Шипицин April 29, 2020 04:42PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Slawa Olhovchenkov April 29, 2020 05:00PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Илья Шипицин April 29, 2020 06:16PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz May 24, 2020 08:49PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

gz May 24, 2020 08:46PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin May 03, 2020 05:04PM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Valery Kholodkov April 28, 2020 08:22AM

Re: http2 push — не планируется ли поддержка <link rel="preload"> по аналогии с заголовком Link?

Maxim Dounin April 28, 2020 12:14PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 103
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready