Массовое сжатие PNG- и JPEG-картинок на сервере без существенной потери качества
На VPS с SSD обычно дефицитом является дисковое пространство. Сайты разрастаются, в какой-то момент чистка логов уже не позволяет по-быстрому освободить ценное место на диске. Перенести часть сайтов на другой сервер — не всегда возможно. В общем, когда других решений нет, то можно пожать картинки. Изменять их разрешение массово, конечно, нельзя, потому что так можно испортить вёрстку или как-то ещё поломать сайт. А вот вычистить из картинок мета-данные (типа всяких XMP) и немного повысить степень компрессии — в крайнем случае можно.
Показываю на примере. Есть у нас довольно тяжёлый по диску сайт, а в нём известная директория с картинками и превьюшками:
du -sh /var/www/mysite/public/sites/default/files/
7.5G /var/www/mysite/public/sites/default/files/
Обработаем её с помощью утилиты jpegoptim:
find /var/www/mysite/public/sites/default/files/ -type f \
\( -iname "*.jpg" -or -iname "*.jpeg" \) -print0 | xargs -0 \
jpegoptim -p -m85 --all-progressive --strip-all
На VPS с одним ядром обработка заняла чуть более часа. Но результат очень порадовал:
du -sh /var/www/mysite/public/sites/default/files/
4.3G /var/www/mysite/public/sites/default/files/
Кстати, такая обработка даёт результат по качеству и весу итогового файла очень похожий (идентичный) на веб-сервис JPEGmini.
PNG-картинки можно оптимизировать с помощью другой утилиты — optipng. Массово она применяется примерно таким образом:
find /var/www/*/public/sites/default/files/ \
-iname "*.png" -print0 | xargs -0 optipng -o7