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

gz nginx-forum на forum.nginx.org
Пн Апр 27 13:33:08 UTC 2020


В 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?

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,287838,287838#msg-287838



Подробная информация о списке рассылки nginx-ru