Оптимизация картинок для web
30.11.2012
Недавно протетстил несколько своих ресурсов на https://developers.google.com/speed/pagespeed. Удивился, что почти все изображения содержат 40-60% избыточной информации, т.е. маркеры EXIF, IPTC, ICC.
Получается удалив эту информацию можно ускорить полную загрузку страницы с картинками на 30%(все медиа на одном сервере nginx)
Получается удалив эту информацию можно ускорить полную загрузку страницы с картинками на 30%(все медиа на одном сервере nginx)
Утилиты для сжатия и удаления маркеров:
- ImageMagick: convert, mogrify
- jpegoptim
- pngnq
На debian все есть в репозиториях:
hcbogdan@station3# apt-get install jpegoptim, pngnq, imagemagick
Небольшой скрипт для оптимизации картинок (png и jpg):
#!/bin/bash
DIR=$1
if [[ -z $DIR ]];
then
exit -1;
fi;
for file in `find $DIR -type f -name '*.jpg'`
do
jpegoptim -q --strip-all "$file"
done
for file in `find $DIR -type f -name '*[^n][^q][^8].png'`
do
newname=${file%'.png'}'-nq8.png'
pngnq -f "$file"
mv -f $newname $file
done
Принимает один параметр - имя директории для поиска картинок. Например:
hcbogdan@station3# chmod a+x image.opt.sh hcbogdan@station3# ./image.opt.sh /var/www
Примечание: в случае png создаеться временный файл "имяфайла"-nq8.png а потом перемещается обратно в источник
Также можно поставить в cron - и статика всегда будет "чистой".
30 00 * * 0 /usr/bin/image.opt.sh /var/www >/dev/null 2>&1
Комментарии