Формат AVIF и «Эгея»

Есть такой современный формат графики — AVIF, который родился из видеоформата AV1. Интересен он тем, что даёт иногда существенную выгоду от использования — в моём непоказательном эксперименте на первой попавшейся картинке он уделал формат JPEG на порядок).

Вместе с тем он неплохо поддерживается современными браузерами — 79% по данным сайта CanIUse. Это ещё без учёта полифилов.

Мне очень хочется его использовать и я ищу способ это сделать в движке «Эгея», который я использую у себя в блоге. Можно было бы просто вставлять эту картинку как HTML, но это не очень-то удобно — у «Эгеи» есть специальная разметка, которая даёт несколько плюсов — в частности с ней дружит встроенный редактор и из неё лучше готовятся поисковые снипеты.

Таблица поддержки браузеров: Chrome, Edge, Safari, Firefox, Opera, IE и мобильные версии показывают версии с поддержкой (зелёные), частичной (жёлтые) и отсутствием (красные).
Уровень поддержки браузерами формата графики AVIF

У меня возникла хорошая, на первый взгляд, идея чуть упростить себе жизнь через модуль mod_rewrite веб-сервера «Апач» («Эгея» его требует, у меня на хостинге он тоже используется) при помощи примерно такого правила:

<IfModule mod_rewrite.c>
AddType image/avif .avif

RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/avif
RewriteCond %{REQUEST_FILENAME} \.jpg$
RewriteCond "%{REQUEST_FILENAME}.avif" -s
RewriteRule ^.*$ $0.avif [END,T=image/avif]
</IfModule>

Что тут написано? Если браузер поддерживает формат AVIF (смотрим в заголовке), и запрашивает JPEG (определяется по расширению), и существует файл ненулевой длины с расширением .avif (то есть image.jpg.avif, например), то отдаём ему AVIF.

Хорошо работает, пока в папке с картинками лежит только image.jpg.avif, как только кладёшь ещё и image.jpg — перестаёт, отдаётся только она. Вчера час наверное думал что не так, пока наконец не понял — поверх «Апача» на хостинге стоит nginx, а ему мои правила по барабану.

Если картинки по урлу нет, то nginx отдаёт запрос дальше в «Апач», срабатывает правило, отдаётся AVIF, как только кладёшь JPEG, nginx его видит, отдаёт по урлу, не спрашивая «Апач» ни о чём.

Что с этим делать пока — не знаю, вероятно ничего, nginx никто отключить не даст (у меня обычный дешёвый хостинг без затей), буду думать над другими способами.

2 комментария

Суперпосудомойка

Я обычно достаточно тщательно выбираю технику — много читаю, смотрю обзоры, пытаюсь определить для себя важные критерии, чтобы по ним потом выбрать подходящую модель.

Такая стратегия ещё не давала сбоев, но иногда выбранная модель настолько радует какой-нибудь нечаянной фичей, что думаешь — без неё было бы очень неудобно, как же я её пропустил-то?

Проекция белого текста «F15» на деревянной поверхности под чёрной горизонтальной полосой.
Крутая суперспособность нашей посудомойки

Каждый раз, когда включаю нашу посудомойку, радуюсь её суперспособности, — в пол она светит не просто одним светодиодом, означающим, что она работает, а часами, где видно сколько времени осталось до конца.

Это как раз пример функциональности, которую я совершенно прохлопал, пока изучал посудомойки по обзорам, но которая досталась мне случайно, — я узнал, что такое бывает уже на этапе покупки.

2 комментария