Quantcast
Channel: Nginx Forum - Nginx Mailing List - Russian
Viewing all articles
Browse latest Browse all 3102

http2_push — не планируется ли поддержка по аналогии с заголовком Link? (no replies)

$
0
0
В HTML страницы бэкендом выдаются элементы <link rel="preload"> с указанием на ресурсы для предзагрузки.
Хотелось бы перейти с предзагрузки на http2_push указанных ресурсов.

Казалось бы, нет проблемы перейти на заголовок Link, который модулем ngx_http_v2_module при http2_push_preload on будет преобразован в push'и.
Однако, в путях к ресурсам используются SSI-вставки с текущими версиями, а HTML вместе в SSI-директивами хранится в кэше.
Условно:
<html>
<head>
<link rel="preload" href="/css/style.css?<!--#echo var="style_css_version" default="1"-->" as="style"/>

<link rel="stylesheet" href="/css/style.css?<!--#echo var="style_css_version" default="1"-->"/>

</head>
<body>

</body>
</html>

А после работы SSI получаем нужный результат:
<html>
<head>
<link rel="preload" href="/css/style.css?123456789" as="style"/>

<link rel="stylesheet" href="/css/style.css?123456789"/>

</head>
<body>

</body>
</html>

Выходит, поможет либо поддержка SSI в заголовках ответа — чего nginx не умеет, либо поддержка модулем ngx_http_v2_module преобразования <link rel="preload"> в http2_push.

Посмотрел, было, в строну njs в надежде что смогу процессить тело ответа после SSI, выкусывать оттуда <link rel="preload">, преобразовывать их в Link-заголовки, которые затем будут преобразованы в ngx_http_v2_module в push'и, но в js_content тело ответа оказалось пустым, а js_filter работает на уровне stream'а.
Так же попробовал использовать js_set для формирования заголовка Link на основе <link rel="preload"> в теле, но в этом случае в теле <link rel="preload"> в теле сохранятся и неясно как поведёт себя браузер при получении и preload-инструкций и http2_push'а.

Нет ли в планах поддерживать преобразования <link rel="preload"> в http2_push?

Viewing all articles
Browse latest Browse all 3102

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>