Оптимизация изображений с поддержкой WebP
Возможно, мы могли бы поговорить об этом в нашей статье (
Повышение производительности в XenForo 2.3), но на тот момент она была еще не совсем готова к показу. (Я начал работать над этим на этой неделе и еще не овладел искусством путешествия во времени).
Первоначально объем нашей поддержки WebP в XenForo 2.3 заключался в том, чтобы просто позволить пользователям загружать файлы WebP и корректно отображать их в строке. Это само по себе было бы положительным изменением, поскольку формат становится более распространенным в сети, но сам по себе он мало что дает для решения проблемы использования диска, что, конечно, также оказывает положительное влияние на производительность.
Но этого было недостаточно.
Если вы хотите автоматически оптимизировать все будущие загрузки изображений, вам просто нужно включить эту опцию.
При загрузке все поддерживаемые в настоящее время типы изображений (кроме GIF) будут сохранены в формате WebP.
Примечание : как и сейчас, миниатюры, баннеры профилей и аватары (и все остальное, что имеет программно установленное имя файла) будут обслуживаться с расширением .jpg, независимо от основного формата файла.
Если у вас есть пользовательские типы контента, которые уже используют систему вложений, например, в Медиа-галерее и Менеджере ресурсов, изображения, загруженные в них, также будут автоматически оптимизированы.
Фактически, если ваше дополнение обрабатывает загрузку с использованием подхода по умолчанию, а именно
XF\Http\Upload
, все новые загружаемые изображения будут оптимизированы автоматически. Это распространяется практически на все имеющиеся у нас системы, включая систему загрузки ресурсов администратора.
Как разработчик, если вы хотите по какой-либо причине отказаться от такого поведения, вы можете сделать это с помощью следующей строки:
PHP:
$upload->setImageOptimize(false);
Это касается будущих загрузок, но многим из вас будет интересно, как оптимизировать существующие файлы. Поэтому вам будет приятно узнать, что вы можете автоматически восстановить все существующие вложения, аватары и баннеры профиля.
Это несколько типичные перестройки, которые вы можете запустить из панели управления администратора на странице «Перестроение кэшей».
Поскольку это довольно интенсивный и длительный процесс, если вы предпочитаете запускать его без риска тайм-аутов и контроля браузера, вы также можете использовать одну из встроенных команд:
Код:
xf-rebuild:attachment-optimization
xf-rebuild:avatar-optimization
xf-rebuild:profile-banner-optimization
Разработчику легко добавить поддержку собственных типов контента, расширив класс
AbstractImageOptimizationJob
.
Мы уже запускали это на разрабатываемой версии форума сообщества XenForo. При этом размер файла, указанный в
xf_attachment_data
таблице,
до преобразования составлял около 40 ГБ. Размер файла, указанный
после преобразования, составляет около 19 ГБ.
Это существенная экономия, которая также окажет положительное влияние на производительность.
«Не очень хорошая» новость
WebP теперь поддерживается всеми основными браузерами. Любой, кто использует современный браузер, не столкнется с проблемами при просмотре изображений. Однако некоторые устройства и браузеры Apple, выпущенные до сентября 2020 года, не поддерживают WebP.
В частности, если вы используете iOS 14 или более позднюю версию, проблем вообще нет. Safari 14 и более поздние версии тоже хороши, но для отображения изображений WebP у вас должна быть установлена как минимум macOS 11 Big Sur.
В более ранних браузерах эти пользователи просто не видели изображений WebP вообще. Они будут выглядеть как разбитые изображения.
С течением времени эта проблема, естественно, становится все менее серьезной, поскольку люди обновляют свое программное и аппаратное обеспечение. Но об этом вам следует знать и подумать, прежде чем полностью конвертировать все изображения в WebP.