По сути, http2 push с использованием http2_push_preload не работает, если вы установили заголовок. Vary: Принять ответ, потому что вы выполняете согласование содержимого с использованием заголовка запроса Accept.Я использую согласование содержимого для отправки (http2 push) изображений webp вместо jpg клиентам, которые его поддерживают.
HTTP / 2 Push работает для файлов .js, .css и всех в одном вызове и показывает «Push / Other» в Chrome DevTools, но не работает в этом единственном уникальном случае (содержание jpg согласовано с webp),и показывает просто «Другое» (не выдвигается) в Chrome DevTools.
Согласование содержимого для сжатия brotli, gzip - все работает нормально и передается правильно, используя Vary: Accept-Encoding и то же самое для языков, использующих Vary: Accept-Language.
Only Vary: Принять не удалось.Пожалуйста, помогите, я собираюсь сдаться.
PS: я просматривал исходный код nginx https://github.com/nginx/nginx/blob/master/src/http/v2/ngx_http_v2.c. Сделайте Crtl + F, и вы найдете случаи только для "Accept-Encoding" и "Accept-Language", ничего для "Accept".Так что я думаю, что «Accept» еще не поддерживается nginx ??
PPS: я не перегружаюсь, только использую http2 push для изображения героя.
Редактировать: вот билет об ошибке на сайте nginx для тех, кто хочет его отслеживать: https://trac.nginx.org/nginx/ticket/1851 https://trac.nginx.org/nginx/ticket/1817
Редактировать 2: Команда Nginx ответила, что не собираетсячтобы поддержать его из-за соображений безопасности (вы можете найти ответ в дублирующем сообщении об ошибке), который, я считаю, происходит из-за разногласия из разных источников, таких как CDN?В любом случае, мне нужна эта функция, поэтому остается только:
Создать собственный патч или пакет.
Использовать другой серверпрограммное обеспечение, которое поддерживает это.
Внедрение в коде веб-сайта функции перезаписи путей .jpg к .jpg.webp, если запросы поступают от клиентов, которые поддерживают webp.
(я не сдаюсь: P)