Optimizacija PNG i JPG slika na serveru

Optimizacija

Ukoliko imate veliki broj sajtova na vašem serveru optimizacija slika može biti jedan od načina da uštedite prostor i poboljšate SEO vaših sajtova i sajtova vaših klijenata.

Alati koje ćemo koristiti u ovom uputstvu su jpegoptim i optipng koji su dostupni na većini Linux distribucija.

Instalacija jpegoptim i optipng

Debian/Ubuntu

sudo apt-get install jpegoptim -y
sudo apt-get install optipng -y

RedHat bazirani sistemi

Potrebno je da omogućite EPEL repozitorij.
yum install epel-release

a zatim pokrenete

yum install jpegoptim -y
yum install optipng -y


jpegoptim možete koristiti na sledeći način:

jpegoptim slika.jpg

nakon toga dobijate izlaz sličan sledećem:

slika.jpg 18×21 24bit N Exif IPTC XMP Adobe JFIF [ok] 8490 –> 8068 bytes (4.9%), optimized

Takođe sliku možete kompresovati na određenu veličinu

jpegoptim --size=200k slika.jpg

slika.jpg 2082×2975 24bit N Adobe JFIF [ok] 69661 –> 205079 bytes (70.56%), optimized

Optipng se koristi na isti način samo nema mogućnost odabira veličine

optipng slika.png

Opti PNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: slika.png
519×600 pixels, 3×8 bits/pixel, RGB
Input IDAT size = 284820 bytes
Input file size = 284973 bytes

Trying:
zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 284202
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 183140

Selecting parameters:
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 183140

Output IDAT size = 183140 bytes (101680 bytes decrease)
Output file size = 183197 bytes (101776 bytes = 35.71% decrease)

Sa ovim alatima možete optimizovati slike u jednom folderu korišćenjem wildcard-a *.jpg ili *.png, ali oni nemaju rekurzivnu opciju.
Zato možete koristiti find i xargs kako biste pronašli sve slike a zatim ih optimizovali bez prekoračenja open files limit-a.

Primeri:

find /home/korisnik/public_html -type f -name \'*.jpg\' | xargs jpegoptim

find /home/korinsik/public_html -type f -name \'*.png\' | xargs optipng

/home/korisnik/public_html je putanja do određenog sajta ili možete samo staviti /home ili /var/www u zavisnosti gde su vam sajtovi locirani.

Ako komande pokrećete kao root najverovatnije će ownership fajlova biti promenjen u root..

Zato preporučujem ukoliko vam je ownership fajlova isti za sve sajtove npr www-data ili apache da uradite sledeće:

sudo -H -u www-data find /home/$i/public_html -type f -name \'*.jpg\' | xargs jpegoptim

sudo -H -u www-data find /home/$i/public_html -type f -name \'*.png\' | xargs optipng

Za korisnike cPanela preporučujem:

for i in `ls /var/cpanel/users/`; do sudo -H -u $i find /home/$i/public_html -type f -name \'*.jpg\' | xargs jpegoptim ; done

for i in `ls /var/cpanel/users/`; do sudo -H -u $i find /home/$i/public_html -type f -name \'*.png\' | xargs optipng ; done

Ukoliko imate baš dosta fotografija xargs podržava multi-threading

for i in `ls /var/cpanel/users/`; do /usr/bin/sudo -H -u $i /usr/bin/bash -c \"/usr/bin/find /home/$i/public_html -type f -name \'*.png\' | /usr/bin/xargs -n 50 -P 8 /usr/bin/optipng \" ; done
for i in `ls /var/cpanel/users/`; do /usr/bin/sudo -H -u $i /usr/bin/bash -c \"/usr/bin/find /home/$i/public_html -type f -name \'*.jpg\' | /usr/bin/xargs -n 50 -P 8 /usr/bin/jpegoptim --strip-all \" ; done

Broj 8 kod -P predstavlja broj jezgara koje vaš server ima dok -n predstavlja broj fajlova koji će biti procesuirani odjednom po jezgru-u

Za korisnike VestaCP preporučujem:

for i in `/usr/local/vesta/bin/v-list-sys-users | awk \'{if(NR>2)print}\'`; do sudo -H -u $i find /home/$i/web -type f -name \'*.jpg\' | xargs jpegoptim --strip-all ; done

for i in `/usr/local/vesta/bin/v-list-sys-users | awk \'{if(NR>2)print}\'`; do sudo -H -u $i find /home/$i/web -type f -name \'*.png\' | xargs optipng ; done

Na ovaj način ownership fajlova će ostati netaknut.