
При открытии сайта основной объем передаваемых данных занимают изображения, поэтому есть необходимо оптимизировать их размер.
Для того что бы не выполнять работы по оптимизации размера изображений вручную я написал небольшой скрипт. Он ищет изображения в папке и пытается выполнить их сжатие.
Скрипт проверил на своем сайте и еще парочке проектов, ошибок в его работе не было замечено.
Для корректной работы скрипта необходимо что бы на сервере было установлено следующее ПО: ImageMagick gifsicle pngcrush optipng advpng trimage
В Ubuntu оно ставится одной командой — aptitude install ImageMagick gifsicle pngcrush optipng advpng trimage . Если у вас другой дистрибутив, тогда возможно придется подключить дополнительные дистрибутивы.
Код скрипта:
#!/bin/bash +x
#install ImageMagick gifsicle pngcrush optipng advpng trimage
find . -regextype posix-extended -iregex '.*\.(jp?g|png|PNG|gif|JP?G|GIF)$' -type f | while read fname;
do
TYPE=`identify "$fname" | grep -E -o 'JPEG|GIF|PNG'`
case "$TYPE" in
JPEG)
convert -quality 75 "${fname}" "${fname}_conv";
jpegtran -copy none -optimize -progressive "${fname}_conv" > "${fname}";
rm -f "${fname}_conv" ;
;;
GIF)
gifsicle -O2 -b "$fname"
;;
PNG)
pngcrush -q -rem alla -fix "$fname" "$fname.tmp"
if [ -f "$fname.tmp" ]; then
mv -f "$fname.tmp" "$fname"
fi;
optipng -zc6-9 -zm1-9 -zs0-3 -f0-5 -q -fix "$1"
advpng -z -4 -q "$fname"
;;
esac
done
Готовый скрипт можно скачать здесь
P.S. Скрипт используйте на свой страх и риск, перед запуском сделайте бэкап проекта.
P.P.S. При написании скрипта часть идей была взята blog.sjinks.pro и книги «Реактивные веб-сайты»