Настройка плагина оптимизации изображений

Архитектура конвейера сжатия: от исходника до производного файла
Настройка любого плагина оптимизации (Imagify, ShortPixel, EWWW, Smush) опирается на принцип двухпроходной обработки. Первый проход — это снятие метаданных (EXIF, IPTC, XMP) и перекодирование цветового профиля в sRGB с гамма-коррекцией при экспорте. Второй проход применяет специфицированные алгоритмы сжатия, где критичен параметр quality, измеряемый в шкалах DCT (дискретного косинусного преобразования) для JPEG. В отличие от встроенной функции WordPress wp_generate_attachment_metadata, которая использует стандартный libjpeg (качество 82% по умолчанию без адаптации), полноценные плагины реализуют адаптивный quantizer, подстраивающий таблицу квантования под содержимое блока 8×8 пикселей. Разница между конкурирующими плагинами заключается в реализации монотонного сжатия: EWWW IO применяет libvips с поддержкой VIPS IC (image compression), тогда как ShortPixel использует собственный препроцессор на базе PNGCrush для PNG и MozJPEG для JPEG. При выборе следует учитывать, что MozJPEG дает выигрыш 5–7% по размеру при равной SSIM (structural similarity index) относительно стандартного cjpeg.
Параметры квантования и контроля качества (quality vs chroma subsampling)
Ключевой технический параметр при настройке — фактор качества, передаваемый в драйвер сжатия. Для формата JPEG решающим является компромисс между коэффициентом сжатия 4:4:4 (без субдискретизации цветности) и 4:2:0 (сокращение цветовой информации вдвое). Плагины, разрешающие ручной ввод значения от 1 до 100, фактически управляют не только уровнем квантования, но и типом subsampling. Например, значение выше 95 активирует 4:4:4 гарантированно, тогда как 80–85 использует автоматику библиотеки. Рекомендуется проверять настройки через инструмент identify -verbose из пакета ImageMagick — если в выводе присутствует Sampling factors: 2x2, 1x1, 1x1, это соответствует 4:2:0. В плагинах WebP (через libwebp) параметр alpha_quality (канал прозрачности) выставляется отдельно от основного q. Отличия от альтернатив: конвертеры на базе Sharp (используется в ServerPress) поддерживают метод предсказания фильтра, что особенно критично для логотипов с резкими краями.
Форматы вывода: WebP, AVIF, JPEG XL — выбор по метрике PSNR и SSIM
Выбор конечного формата диктуется поддержкой на стороне сервера и браузера. Техническая спецификация плагина должна включать опцию выходного формата с приоритизацией. AVIF требует кодека libaom (или SVT-AVIF), который на порядок медленнее, но при PSNR > 38 dB дает выигрыш по размеру до 25% по сравнению с WebP. JPEG XL (кодек libjxl) использует прогрессивную вейвлет-обработку, обеспечивая lossless-сжатие с плавной деградацией. При настройке необходимо указать параметр intensity (для AVIF — логическое значение 0 или 1, влияющее на цветовой охват). Стандарты качества: для JPEG качество 82 соответствует SSIM 0.97–0.98 при 8-битном цвете; для WebP значение 75–80 сохраняет воспринимаемое качество, эквивалентное JPEG 90. Плагины, предлагающие сжатие без потерь (lossless), используют режим PNG-подобного кодирования для WebP (lossless true), что оправдано только для графики с высокочастотными переходами.
Материалы и ограничения кодирования: что скрывается под «автоматической оптимизацией»
Техническое ограничение — работа с 16-битными изображениями (TIFF/PSD) при фильтрации. Большинство плагинов автоматически понижают разрядность до 8 бит, что теряет информацию глубины тона. Альтернатива — плагины, поддерживающие libtiff с включенным тегом COMPRESSION_ADOBE_DEFLATE. Для файлов с прозрачностью (PNG-24) настройка должна отключать interlace (Adam7), так как он увеличивает размер на 15–25% при стандартном 7-проходном сканировании. Специфический параметр — dithering для PNG-8: если выбран Floyd-Steinberg, он минимизирует артефакты, но добавляет шум; отключение (No dither) при палитре ≤256 цветов дает строго равномерный фон. В контексте WordPress не рекомендуется устанавливать strip_meta => false в хуке image_make_intermediate_size, так как это блокирует чистку EXIF — стандарт GDPR может требовать удаления GPS-координат, что настраивается в плагине дополнительной опцией Exif stripping mode: aggressive.
Сравнение с альтернативными решениями: imagick vs GD vs Vips
Внутренняя реализация плагина использует один из трех движков. GD (стандартный для PHP 8) не поддерживает WebP без дополнительных расширений и дает худший rate-distortion для JPEG (на 10–12% больший размер при subjective quality). Imagick (обертка над ImageMagick) позволяет тонко настроить фильтр ресамплинга (Lanczos, Mitchell, Catrom) — для ресайза max-width: 1920px рекомендуется фильтр Lanczos с radius 9, что обеспечивает четкость без звонов. libvips (используется в WP Compress) имеет преимущество по памяти — до 5 раз быстрее при многопоточном конвейере. Настройка плагина включает выбор движка через константу PHP_IMAGICK_QUALITY или EWWW_IMAGE_OPTIMIZER_IMS — если сервер поддерживает VIPS, рекомендуется выставлять vipsthumbnail с параметром crop=attention, основанным на алгоритме saliency detection.
Контроль выходного качества: флаг сохранения оригиналов и генерация ретины
Стандартная опция Backup original создает копию первичного файла в папке /wp-content/uploads/backup/ с суффиксом -original. Технически это реализовано через запрос update_post_meta($id, '_original_meta', $original_path). В отличие от плагинов, которые перемещают оригинал в /backup (ведет к дублированию файлов), альтернативные решения (Smush Pro) назначают тег smush-backup в системных метаданных. Для ретина-графики (2x, 3x) настройка должна включать префиксы имен файлов, например @2x, что требует замены srcset в кэше плагина. Параметр max_width для retina — 2560 пикселей, так как стандартный WordPress лимитирует размер промежуточных копий через big_image_size_threshold (2560). Рекомендуется отключать эту опцию при добавлении поддержки AVIF через фильтр wp_calculate_image_srcset с приоритетом 99.
Специфические настройки для сорсов и атрибутов изображений
Плагины оптимизации перехватывают генерацию атрибутов loading="lazy" и fetchpriority="high". Технически это реализуется через хук wp_get_attachment_image_attributes. Для LCP (Largest Contentful Paint) необходимо вручную выставить fetchpriority="high" для первого изображения выше сгиба — плагины с мастером настроек должны предоставлять поле исключения LCP URL. Отличие от альтернатив без настройки — дефолтный lazy-load в WordPress 6.x (через loading=lazy) снижает производительность P75 на 8–12%, если не отфильтровать критическое изображение. В конфигурации плагина следует включить сканирование LCP с порогом viewport в 1200 пикселей.
Добавлено: 24.04.2026
