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 bytesTrying:
zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 284202
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 183140Selecting parameters:
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 183140Output 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.