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

Меня зовут Алексей, я работаю верстальщиком в компании FunBox. Мы разрабатываем продукты для мобильных операторов: геосервисы, мобильную рекламу, платежи, интерактивные сервисы и разное другое. Вы пользуетесь нашими продуктами каждый день или нет — тут у меня NDA.

В FunBox хороший продукт — это результат развитой инженерной культуры, и наш корпоративный сайт это подтверждает. Для нас это история о сапожнике в сапогах, ведь разрабатывать для веба, но не сделать нормальный сайт для себя как минимум не круто. Дальше расскажу, как делать хорошо.

Зачем использовать актуальные форматы изображений

Основное преимущество современных форматов изображений — это уменьшение объёма передаваемого по сети трафика, когда пользователь взаимодействует с сайтом или веб-приложением. Как следствие, страницы открываются быстрее, что положительно влияет как на впечатление пользователя, так и на позиции в поиске: сайты, которые быстро загружаются, получают более высокие позиции в выдаче Яндекса и Google. При этом качество графических материалов остаётся по-прежнему высоким при минимальных трудозатратах на внедрение. В то же время не рекомендуем использовать только самые модные форматы, так как в отдельных случаях это не принесёт большой пользы.

Краткое сравнение основных форматов изображений для веба

Все форматы изображений, которые используются в вебе, можно разделить на две большие группы: векторные и растровые. Из векторных форматов сейчас используется только SVG. Он отлично подходит для изображений с простыми геометрическими формами, например, пиктограмм или логотипов, и они одинаково хорошо выглядят как на обычных экранах, так и на устройствах с HiDPI-дисплеями, что делает SVG идеальным для адаптивной вёрстки под различные устройства. Но он не годится для изображений с большим количеством деталей, например фотографий, из-за размера файла, плюс браузеру потребуются немалые вычислительные ресурсы CPU для отрисовки.

Для фотографий на сайте лучше всего подходят растровые форматы. Самые известные и проверенные временем — JPEG и PNG. Есть ещё GIF для анимированных изображений, но он теряет актуальность, и всё чаще его рекомендуют заменить на HTML5-видео. С развитием веб-технологий JPEG и PNG всё чаще стали использоваться как фолбеки для браузеров, которые не поддерживают современные форматы растровых изображений, такие как WebP и AVIF. Сейчас в вебе JPEG отходит на второй план и уступает своё место новым форматам, так как они во многих аспектах его превосходят.

В 2010 году Google выпустили формат WebP как альтернативу PNG и JPEG. Он использует алгоритм сжатия ключевых кадров из видеокодека VP8, поэтому искажение исходного изображения выглядит иначе относительно других форматов. Сжатие состоит из двух этапов: на первом этапе предсказывается содержимое блоков по уже декодированным, на втором — кодируется ошибка предсказания (Википедия). WebP оставляет чёткие края фотографии, но сжатие с потерями ухудшает детализацию и текстуру. Также надо учитывать, что его настройки сжатия не соответствуют таковым для JPEG, другими словами, качество 50% для WebP и JPEG будет отличаться. В случае с WebP качество снижается достаточно сильно, поэтому рекомендуется начинать с наибольших значений и постепенно их уменьшать (Хабр).

WebP объединяет все достоинства форматов JPEG, PNG и GIF: сжатие с потерями и без потерь, поддержку прозрачности и анимации. Это позволяет использовать его для разных изображений, что упрощает подготовку и обработку графики на сайте. Кроме того, WebP обладает рядом преимуществ:

  • сжатие изображения без потерь на 26% лучше, чем у PNG;

  • сжатие изображения с потерями лучше JPEG на 25-34% при одинаковом индексе структурного сходства (SSIM);

  • поддержка прозрачности без потерь при увеличении размера всего на 22%.

С недавних пор появилась возможность использовать для изображений в вебе ещё один формат — AVIF. Это свободный формат сжатия с потерями качества, основанный на библиотеке для сжатия кадров AV1 (Википедия). Первая версия спецификации была выпущена в начале 2019 года, а первым браузером, который поддерживает изображения в формате AVIF, стал Google Chrome 85, релиз которого состоялся в конце августа 2020 года. Из основных возможностей этого формата отмечают следующие:

  • значительное уменьшение размера файла при сохранении визуального качества изображения;

  • поддержка анимированных изображений;

  • поддержка прозрачности.

К недостаткам AVIF относят отсутствие поддержки прогрессивного рендеринга: пока изображение не скачается полностью, на его месте ничего не будет отображаться, тогда как JPEG и WebP могут показывать частично загруженное изображение (видео с наглядной демонстрацией).

Чтобы подробнее ознакомиться с WebP и AVIF и сравнить их с другими известными форматами изображений, рекомендую прочитать исследование Джейка Арчибальда и статью одного из авторов-разработчиков формата AVIF в блоге Netflix.

Выбор формата для изображений на сайте

Помимо преимуществ того или иного формата изображений, важно учитывать, поддерживают ли его браузеры. WebP поддерживается практически везде — его доля составляет более 95%:

AVIF в вебе поддерживают почти 70% браузеров:

Есть основания полагать, что все актуальные браузеры начнут полноценно поддерживать AVIF быстрее, чем это получилось с форматом WebP (формат анонсировали в 2010 году, но до браузера Safari его поддержка добралась только в конце 2020 года (!) с выходом Safari 14 и macOS 11 Big Sur). WebKit уже внедрил декодирование AVIF, но ещё не включил его по умолчанию.

Подготовка изображений в форматах WebP и AVIF

Рассмотрим инструменты для подготовки изображений в новых форматах. Одну-две иллюстрации можно обработать с помощью привычных инструментов: онлайн-сервисов, например Squoosh или avif.io, или графических редакторов. Ещё Google выпустили плагин WebPShop для Фотошопа, который добавляет возможность открывать и сохранять изображения в формате WebP, предварительно оценив качество в окне просмотра.

AVIF пока не так широко поддерживается: пока только в GIMP и Pixelmator Pro. Есть надежда, что по мере роста его популярности больше фоторедакторов научатся с ним работать.

Если не знаете, какую степень сжатия выбрать для начала, в качестве опорных значений можно взять цифры из сравнительной таблицы. Она показывает соответствие различных значений качества JPEG, WebP и AVIF. Стоит отметить, что значения, которые вы подберёте опытным путём на своём материале, могут отличаться от приведённых в этой таблице. Это вполне закономерно, так как для разных изображений может требоваться разная степень сжатия.

Если на сайте несколько десятков изображений, будет нерационально конвертировать их вручную в другой формат с помощью графических инструментов. Здесь на помощь приходят консольные утилиты, которые автоматизируют конвертацию и оптимизацию изображений, в том числе путём встраивания в сборку проекта.

Если стоит задача автоматизировать конвертацию изображений только в WebP, можно воспользоваться утилитой Google cwebp. Пример вызова утилиты из документации Google:

cwebp -q 80 image.png -o image.webp

Другим вариантом может быть использование утилит, поддерживающих работу сразу с несколькими форматами изображений. Например, мы в FunBox разработали утилиту optimizt. Она работает с наиболее популярными форматам изображений (PNG, JPEG, GIF, SVG) и конвертирует растровые изображения в WebP и AVIF. Пример вызова утилиты для конвертации всех изображений по переданному пути в WebP:

optimizt --webp path/to/directory

Аналогично для AVIF:

optimizt --avif path/to/directory

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

Как использовать актуальные форматы изображений на сайте

Чтобы использовать графические материалы в новых форматах, потребуется доработать код сайта. Для подключения контентных изображений достаточно использовать в разметке тег picture, в котором на первом месте указан путь до изображения:

<picture>
  <source srcset="/path/to/image.avif" type="image/avif">
  <source srcset="/path/to/image.webp" type="image/webp">
  <source srcset="/path/to/image.jpg">
  <img src="/path/to/fallback-image.jpg" alt="">
</picture>

Если браузер поддерживает AVIF или WebP, он загрузит и отобразит соответствующее изображение. В противном случае он проигнорирует путь до него и попытается загрузить следующее, указанное в source. Подробнее можно почитать в описании на MDN.

Для декоративных (фоновых) изображений, которые подключаются в CSS, потребуется чуть больше действий. Например, можно использовать специальные классы на корневом элементе html. Имена классов могут быть любыми, главное, чтобы было понятно, за что они отвечают. При помощи JS-кода можно проверять, какой формат поддерживает браузер, и присваивать элементу html соответствующий класс.

Вот пример такого кода, который размещается в блоке head разметки страницы:

<script>
    var imageData = {
      avif: 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=',
      webp: 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',
    };

		// Функция проверки написана на основе документации Google:
		// https://developers.google.com/speed/webp/faq#in_your_own_javascript

    function checkImageFormatSupport(imageFormat, callback) {
      var img = new Image();
      
      img.src = imageData[imageFormat];
      
      img.onload = function () { var result = (img.width > 0) && (img.height > 0); callback(result); };
      img.onerror = function () { callback(false); };
    }

		// Проверяем поддержку WebP Lossy (сжатие с потерями)
		
    checkImageFormatSupport('webp', function (isWebpLossySupported) {
      if (isWebpLossySupported) {
        document.documentElement.className = document.documentElement.className.replace('no-webplossy', 'webplossy');
      }
    });

		// Проверяем поддержку AVIF
	
    checkImageFormatSupport('avif', function (isAvifSupported) {
      if (isAvifSupported) {
        document.documentElement.className = document.documentElement.className.replace('no-avif', 'avif');
      }
    });
</script>

Подчеркну, что этот код должен выполняться именно в head, чтобы избежать двойной загрузки одного и того же изображения в разных форматах: сначала в JPEG/PNG, а потом в AVIF/WebP.

Теперь нам нужно немного доработать стили, добавив в них подключение тех или иных изображений в зависимости от класса на элементе html. Вот как это может выглядеть на примере (синтаксис SCSS):

.block-name {
	background-color: #d3dae0;
	background-size: cover;
	background-repeat: no-repeat;
  
	.no-webplossy &,
	.no-avif & {
		background-image: url('./path/to/image.jpg');
	}
  
	.avif & {
		background-image: url('./path/to/image.avif');
	}
  
	.webplossy & {
		background-image: url('./path/to/image.webp');
	}
}

Из кода видно, что если браузер не поддерживает форматы AVIF и WebP, то изображение загружается в формате JPEG.

С помощью этих нехитрых приёмов мы готовы использовать изображения в формате AVIF и WebP на клиенте (в браузере). Также отмечу, что в настройках сервера нужно добавить кеширующие заголовки для форматов .avif/.webp наряду с остальными форматами изображений, если это не сделано по умолчанию.

Благодаря этим доработкам каждый браузер сможет выбрать наилучший из предложенных форматов изображений:

  • в Google Chrome 85+ и Firefox 93+ загрузится AVIF;

  • в Safari 14+ на macOS 11+ — WebP;

  • во всех остальных браузерах — JPEG или PNG.

Что нам дало использование новых форматов изображений

Мы исследовали, как новые форматы изображений влияют на объём трафика и скорость загрузки, на своём корпоративном сайте. Для оптимизации выбирали страницы, на которых есть иллюстрации, и сравнивали показатели до и после. 

Начали с главной страницы, так как на неё попадают практически все посетители сайта и скорость её загрузки влияет на общее впечатление о компании. Она содержит два достаточно больших изображения: на первом экране и над футером. После перехода на WebP размер передаваемых данных при загрузке сократился почти на 55% для мобильных устройств и десктопа, а значение Largest Contentful Paint (LCP, время отрисовки самого большого видимого объекта) уменьшилось почти на 25%.

Следующая страница с изображениями — О нас. Она содержит много контентных фотографий, но большинство из них имеют небольшой размер в пикселях. Замена на WebP сэкономила 65-70% трафика в зависимости от устройства. Кстати, эта интересная особенность формата WebP — лучшее сжатие для небольших изображений в сравнении с AVIF — упоминается в статье на Хабре. А вот значение LCP практически не изменилось: стало меньше всего на 5%. Кажется, что такого не может быть, но всё логично: LCP определяется по длительности загрузки самого большого элемента на странице, которым в нашем случае является заглавная фотография, а после конвертации в WebP её размер несильно уменьшился. О причинах этого напишу далее.

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

Здесь экономия от перехода на WebP уже не так заметна и составляет 17% по сравнению со старым добрым JPEG. И здесь возникает вопрос: почему же в этом случае трафик уменьшился не так значительно, как на других страницах? Всё дело в исходных изображениях, насколько они насыщены мелкими деталями. Для хорошо детализированных изображений, например фотографий на схемах проезда к офисам, пришлось практически вручную подбирать степень сжатия. Нередко она была выше принятых по умолчанию 75%, чтобы изображение после конвертации в WebP сохранило приемлемое качество по сравнению с оригиналом. Из этого можно сделать вывод, что использование WebP для реальных фотографий, насыщенных большим количеством мелких деталей, не всегда приводит к существенной экономии трафика. В отдельных случаях после конвертации изображение может весить даже больше, чем иллюстрация такого же визуального качества в формате JPEG.

Если коротко, внедрение WebP помогло нам сократить размер изображений на сайте:

  • на главной странице иллюстрации стали весить в 2 раза меньше;

  • на странице «О нас» удалось достичь почти трёхкратного сокращения общего размера изображений;

  • в разделе «Контакты» цифры оказались скромнее: всего –17%.

В начале 2021 года мы провели другой эксперимент: решили перевести все изображения в AVIF. Были опасения, что из-за отсутствия поддержки в nginx может ничего не получиться, к тому же AVIF слишком новый формат и при его использовании ещё встречаются некоторые проблемы. Одна из них проявилась спустя несколько месяцев после добавления на сайт AVIF-изображений. Мы заметили, что в одной из dev-версий браузера Firefox перестала отображаться часть иллюстраций. Выяснилось, что эти AVIF-изображения не соответствуют спецификации и содержат технические ошибки (подробное описание можно прочитать на баг-трекерах Chromium и Mozilla). Ошибка закралась в известную библиотеку sharp, которая используется под капотом нашего optimizt. Спустя 4 месяца автор sharp выпустил исправленную версию библиотеки, после чего мы заново переконвертировали изображения.

Тем не менее, результаты внедрения AVIF оказались неоднозначными. Так, на главной странице Retina-изображения показали гораздо лучшую компрессию с сохранением визуального качества (размер файлов уменьшился почти в 2 раза по сравнению с WebP), чем обычные. Надо учитывать, что используемые на странице иллюстрации созданы в графическом редакторе, это не реальные фотографии, а такие изображения, как правило, лучше сжимаются, потому что обычно на них гораздо меньше мелких деталей. А вот на странице «О нас» и на схемах проезда конвертация изображений в AVIF сэкономила всего 5-15% на общем размере файлов по сравнению с WebP. Можно сказать, что в этом случае нет большой разницы между WebP и AVIF. Поэтому если у вас на сайте уже есть WebP-изображения, то вам необязательно их переводить в AVIF — по итогу может оказаться, что результат не оправдает приложенных усилий. Другое дело, если вы ещё не внедрили WebP, в этом случае переход сразу на AVIF может кардинально ускорить загрузку страниц.

В качестве общего вывода отмечу, что всегда нужно делать замеры до и после изменения формата изображений. Это поможет объективно оценить полученные результаты и определить целесообразность перехода на WebP, AVIF или что-то ещё.

Что дальше?

Добавление поддержки WebP и AVIF на нашем сайте сэкономило нам до 50-60% трафика на отдельных страницах. При этом сами форматы привычны и их можно де-факто считать стандартом для изображений в вебе. Да, есть свои минусы (привет, Safari), но в конечном итоге их можно и нужно использовать на сайтах и в веб-приложениях. Посмотрим, что будет дальше. Уже завели таймер на следующий заход, когда появится новый формат изображений для веба, способный потеснить AVIF.

Комментарии (20)


  1. A_HREF
    08.12.2021 17:16
    +6

    Про AVIF надо еще добавить, что это пипец какой медленный для декодинга формат.

    Может легко получиться, что страница будет тормозить с ним больше, чем WEBP с учетом скачивания дополнительных байт. Особенно это актуально для встроек.

    Если у вас 10-20 картинок на странице, стоит подумать и протестировать и то и то, желательно не на топовом компе разработчика.


    1. thegriglat
      08.12.2021 17:22
      +1

      Угу, а то получится "скачалось быстро, а показать не смогло" на каком-нибудь телефоне за условные 10к


    1. ObitoUchiha1985
      09.12.2021 11:47

      Проблема в том, что разрабы браузеров почему-то не хотят использовать быстрый декодер (dav1d), который декодирует avif в 2-3 раза быстрее чем это делает референсный декодер aom. dav1d на ПК декодирует avif с такой же скорость, с которой декодируется heic/heif, а на arm скорее всего даже быстрее.


    1. aycherkasov Автор
      09.12.2021 11:57

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

      https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4

      https://jakearchibald.com/2020/avif-has-landed/


  1. nin-jin
    08.12.2021 17:37

    В статье крайне не хватает следующих бенчмарков:

    1. Скорость кодирования/декодирования. Сжать на 20% не сложно. Сложно не потратить при этом на порядок больше ресурсов.

    2. Оценка качества при том же размере. Вы говорите про уменьшение размера при перекодировании, но ни слова о том, что было бы при перекодировании в тот же JPEG до такого же размер. В том числе слепое рандомизированное тестирование человеческим глазом


    1. aycherkasov Автор
      09.12.2021 12:02
      +1

      Я не стал перегружать статью этими цифрами, с ними можно ознакомиться в исследовании Джейка Арчибальда и в статье из блога Netflix. Там много всего интересного, есть и визуальное сравнение изображений в разных форматах одного и того же размера/степени сжатия.


    1. ObitoUchiha1985
      09.12.2021 12:05
      +1

      1) Сейчас скорость кодирования можно сказать не учитывается, потому-что 1 раз закодировал, а посмотрели эту картинку например 10000 раз.

      2) Тут согласен, жепег визуально может казаться лучше при слепом тестировании из-за добавления своего шума, тогда как webp и тем более avif не добавляют шума, а наоборот избавляются от того шума, что есть в исходнике. Например если фотка сильно пошарплена, тогда жепег 100% будет казаться лучше при слепом тестировании. Но если жепег такой, что видна блочность, тогда avif 100% лучше, ну а webp как повезёт (в зависимости от контента). Так же жепег сильно блочит градиенты, например небо на фотках.

      Так же, слепое сравнение жепега и avif без сравнения с исходником такое себе занятие. А если сравнивать именно с исходником, то avif сохраняет куда больше инфы, тогда как при сравнении между собой без сравнения с исходником avif может показаться хуже жепега.

      Привыкли мы уже к жепегу так сильно, что остальное кажется плохим, а оно не плохое, оно просто работает по другому. Например avif (av1) делает упор на мелкие детали и заметно мылит что-то слабо контрастное, но мы наоборот лучше видим потери в слабо контрастных участках, чем в мелких деталях, поэтому нужно использовать адаптивную квантизацию, чтобы выделять больше бит на слабо контрастные участки, тогда можно избежать "мыльца" при том что мелкие детали всё равно будут лучше чем у жепега.


      1. nin-jin
        09.12.2021 15:28

        Для среднестатистического пользователя на 1000 загруженных картинок хорошо если 10 просмотров наберётся, ибо сейчас "контент" генерируется много быстрее, чем его успевают "потреблять". Но это всё не важно. Сервера тоже не бесконечные, так что их лучше потратить на что-то более полезное (например, на кодирование видео).

        Пользователь всё-равно не видит оригинала, так что сравнивать надо именно визуальное восприятие того, что вы ему показываете.


        1. ObitoUchiha1985
          09.12.2021 16:41
          -1

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

          Ну раз пользователь не видит оригинала, то значит ему можно подсовывать вообще какую-то дичь сгенерированную нейросетями, которая только отдалённо напоминает оригинал, но за то визуально круто выглядит, так что-ли? Будет весить такая картинка сгенерированная нейросетями 2кб например, хорошо же.

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


  1. Massacre
    08.12.2021 17:52
    +2

    Не все технологии одинаково полезны. WebP, к примеру, неестественно искажает фотографии (если сравнивать с JPG). Правда, JPG качества менее, чем примерно 80, обычно уже содержит достаточно видимые макроблоки («квадратики»).

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

    В кодеке AV1 (AVIF — производный от него формат) так перестарались со сжатием в ущерб скорости, что без аппаратной поддержки декодирования лучше это и не пробовать.


    1. ObitoUchiha1985
      09.12.2021 11:34

      av1 (avif) на ПК декодируется с такой же скоростью что и hevc (h265) (heic/heif) при возможном лучшем качестве. На arm скорее всего декодируется быстрее чем hevc, я это пока не тестировал (протестирую). Аппаратная поддержка av1 уже есть.

      Просто не нужно использовать на странице фотки 12мп, тогда проблем быть не должно, такие фотки использовать только в галереях, где они показываются по 1 штуке за раз.

      А вот перестарались со сжатием в vvc (h266), говорят он в 2 раза медленее декодируется чем hevc. А vp9/av1 ориентированы на веб, поэтому ориентировались на быстрое декодирование. Для av1 просто нужно использовать декодер dav1d и всё.


      1. Massacre
        09.12.2021 19:26

        С точки зрения аппаратного ускорения, h264, h265 и даже VPx, уже доступны достаточно давно, чтобы их поддерживало практически всё актуальное железо, а вот av1 если и есть, то на очень свежем железе (с 2020 года).


        1. ObitoUchiha1985
          09.12.2021 19:53

          А если смотреть по времени реализации, то av1 аппаратно реализовали быстрее всех остальных кодеков.

          Не удивительно что кодеки 2003 (h264) и 2012/2013 (h265/vp9) годов сейчас поддерживаются почти везде.


  1. skymal4ik
    08.12.2021 22:57

    Расскажите, а что по статистике? Какой процент пользователей всё ещё откатываются к jpeg?


    1. aycherkasov Автор
      09.12.2021 16:05

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


  1. ObitoUchiha1985
    09.12.2021 11:34

    Уже какое-то время есть плагин avif для фотошопа, с открытым исходным кодом от какого-то разраба. Минус этого плагина - нету предпросмотра, но с такой то скоростью кодирования возможно это и не минус.


  1. DEamON_M
    09.12.2021 14:00

    <picture>
      <source srcset="/path/to/image.avif" type="image/avif">
      <source srcset="/path/to/image.webp" type="image/webp">
      <source srcset="/path/to/image.jpg">
      <img src="/path/to/fallback-image.jpg" alt="">
    </picture>
    

    Это хорошо, но получается, что теперь надо хранить не 1 картинку в jpg, а 3 (jpg, webp и avif). А место то на сервере не резиновое. Получается, что реально это использовать только для каких-нибудь изображений в шаблоне сайта, но никак не для динамического контента (например, изображения товаров), так как их может быть ну уж очень много, если каталог на сайте здоровенный. Ну или для лендингов есть смысл это использовать.


    1. aycherkasov Автор
      09.12.2021 15:19

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


  1. Xenotester
    09.12.2021 20:22

    Странно видеть в статье про avif и webp картинки в png


    1. drWhy
      09.12.2021 21:19

      Habrastorage:
      «Доступные расширения: jpg, gif, png; ширина до 5000px; максимальный размер до 8 Мбайт».
      Вроде бы ничего не поменялось пока.