Новые оптимизации изображений на стороне клиента для Discourse

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

Развивая эту идею, мы представили новую систему Предстоящие изменения, которая добавляет несколько новых возможностей в существующую систему:

Конвертация GIF в анимированный WEBP

Конвертация больших GIF-файлов уже давно была в нашем планах и обсуждениях. Теперь они автоматически конвертируются в анимированный WebP, размер которого в среднем вдвое меньше оригинала:

1ueX9IP
(2,5 МБ GIF → 1 МБ WEBP)

output
(10,1 МБ GIF → 4,8 МБ WEBP; такой файл не был бы разрешён по умолчанию в Discourse из-за размера)

Конвертация HEIC

В 2020 году мы добавили поддержку формата HEIC с помощью серверной конвертации. Теперь также поддерживается обработка таких файлов непосредственно в редакторе, что позволяет пользователю увидеть результат конвертации до отправки сообщения. Серверная конвертация осталась в качестве резервного варианта на случай, если клиентская не сработает по какой-либо причине.


(3,4 МБ HEIC → 650 КБ JPG)

Конвертация JXL

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


(1,1 МБ JXL → 930 КБ JPG)

38 лайков

Отлично видеть оптимизацию для повышения эффективности! Но почему бы не шире использовать WebP, например, для конвертации в JXL и HEIC, и особенно для конвертации и сжатия PNG? Я бы предложил AVIF, но, в отличие от WebP, насколько мне известно, он пока не получил достаточно широкой поддержки.

HEIC и JXL с прозрачностью уже конвертируются в WebP вместо JPG. Я рассматривал возможность всегда использовать WebP, но это потребовало бы добавления множества настроек сайта, чтобы администраторы могли тонко настраивать поведение, что заставило меня задуматься.

То же самое.

В идеале я бы хотел, чтобы мы дали администраторам возможность управлять сжатием изображений как на стороне клиента, так и на стороне сервера, при этом сохраняя разумные значения по умолчанию, и даже позволили бы конечным пользователям отключать сжатие непосредственно при загрузке через модальное окно composer, как это делают Telegram и WhatsApp. Однако внутри компании нет интереса к такой работе.

6 лайков