Как я перестал просить клиентов сжимать картинки: побеждаем мегабайтные PNG в WordPress раз и навсегда
Привет! Меня зовут Павел. Уже 7 лет я создаю и поддерживаю сайты на WordPress.
Каждый вебмастер, сдающий сайт клиенту, проходит через одну и ту же историю. Ты оптимизируешь код, настраиваешь сервер, собираешь идеальный по скорости сайт, который выбивает 90+/100 в Google PageSpeed. На созвоне ты проводишь лекцию: «Иван Иваныч, не загружайте исходники в PNG и JPG! Пользуйтесь конвертерами, сжимайте до WebP...».
Иван Иваныч кивает. А через неделю загружает в галерею тридцать три тяжелых PNG-скриншота весом по 5 МБ каждый. PageSpeed краснеет, мобильные пользователи плачут.
Обычно эту проблему решают плагинами-оптимизаторами, которые хранят и оригинал, и сжатую копию, подменяя код «на лету». Это нагружает процессор и забивает диск. Но я нашел отличное решение, которое делает всё само прямо «из коробки».
Почему популярные плагины для WebP — это боль
Большинство популярных решений (вроде WebP Express) работают по принципу дублирования:
- Клиент загружает image.png (5 МБ).
- Плагин генерирует копию image.webp (300 КБ).
- Через правила .htaccess или замену HTML сайт пытается отдать WebP тем браузерам, которые его поддерживают.
В чём минус? Исходный пятимегабайтный хлам продолжает лежать мертвым грузом на сервере. Ваши бэкапы весят гигабайты, а если плагин отключится — сайт снова начнет раздавать тяжелые оригиналы.
Решение: Конвертация «намертво» при загрузке
На своем последнем проекте (журнал для молодых родителей, где контента будет очень много) я решил внедрить инструмент от официальной команды разработчиков WordPress — Performance Lab. В него встроен модуль Modern Image Formats.
Этот плагин работает кардинально иначе. Ему плевать, насколько ленив ваш клиент. Логика проста:
- Клиент берет любой тяжелый PNG или JPEG и кидает его в медиабиблиотеку.
- Ядро WordPress перехватывает загрузку и силами сервера (через библиотеки GD или Imagick) мгновенно пересохраняет изображение в .webp.
- Все миниатюры сайта (сетка статей, виджеты, обложки) генерируются строго в формате WebP.
- Исходный тяжелый файл ужимается, а сайт генерирует чистый, современный код без костылей с редиректами.
Как это выглядит в админке:
При загрузке обычного PNG-скриншота плагин мгновенно отдает нам готовый результат: файл физически переведен в .webp, его вес уменьшился в разы.
Как настроить это за 2 минуты
Повторить это на своем или клиентском сайте сможет любой:
- Ищем в репозитории WordPress бесплатный плагин Performance Lab и активируем его.
- Переходим в раздел Настройки -> Производительность.
- Находим модуль Modern Image Formats и нажимаем «Активировать».
(Бонусом в этом же плагине рекомендую включить Speculative Loading — штука в фоновом режиме предзагружает страницы, на которые пользователь только наводит курсор, из-за чего статьи открываются быстрее).
Важный нюанс: Чтобы все сработало, ваш хостинг должен поддерживать WebP на уровне PHP (в 2026 году это умеет любой адекватный сервер). Проверить это можно в Инструменты -> Здоровье сайта -> Информация -> Обработка изображений. В строке поддерживаемых форматов для GD или Imagick должно быть написано WEBP.
Итог
Вместо того чтобы писать клиентам гайды по оптимизации графики и тратить нервы, проще один раз настроить автоматику на сервере. Клиент работает так, как ему удобно, а вебмастер спит спокойно, зная, что сайт останется в «зеленой зоне» PageSpeed, а дисковое пространство на хостинге не закончится через месяц.
А как вы боретесь с любовью заказчиков к несжатой графике? Пользуетесь сторонними сервисами или перекладываете оптимизацию на сервер?