Google koristi rezultate brzine učitavanja sajta kao jedno od merila za rangiranje i o tome smo govorili u ranijim tekstova na našem blogu. Brzina je bitna i optimizacija sajta u tom pravcu je cilj koji mora biti zacrtan i ostvaren ukoliko želimo da budemo u rangu dobro postavljenih sajtova. Bitno je napomenuti da se optimizacije ne radi radi Google-a, već uvek radi poboljšanja UX-a (engl. User Experience), odnosno, radi poboljšanja servisa u kome uživaju korisnici.
Ako govorimo o udobnosti na internetu, brzina je najtraženija, pa ukoliko korisnici čestu budu izloženi čekanju na učitavanje sajta na koje nisu navikli, velika je verovatnoća da će se okrenuti konkurenciji (pročitati: SEO greške koje treba izbegavati, stavka 2).
Šta je sa Magento platformom?
Ako ste zacrtali visoke ciljeve u vodama e-commerce-a, 9 od 10 puta Magento će biti bolji izbor kada se zahtevaju mogućnosti i fleksibilnost. Međutim, može se reći da začkoljice postoje pa se govori da je Magento malo sporiji sistem, a kao što smo na početku napisali, to nije dobro za UX.
Najveći broj žalbi su u potpunosti opravdane (jer Magento će sigurno biti spor ako ga smestite na jeftin deljeni hosting uz dvesta drugih veb-sajtova). Tehnički i u teoriji, Magento je out-of-box najbrži u svojoj klasi, ali se i pored toga mnogo još može popraviti kako bi se to i pokazalo ispravnim u praksi. Evo i spiska prekoruka koje će vam pomoći da ubrzate i poboljšate UX na Magento platformi:
Magento i hosting
1. Zakupite dedicated server. Adriahost ponudu dedicated servera možete videti ovde: Adriahost Dedicated Serveri.
2. Hostujte vaš sajt na lokaciji koja je fizički najbliža vašim klijentima i ovo takođe spada u pogodnosti koje pruža Adriahost (u ponudi su lokacije: Njujork, San Francisko i Amsterdam).
3. Nemojte hostovati datoteke koje nećete koristiti.
4. Idite u MySQL Admin, odaberite sve tabele i uradite reparaciju i optimizaciju.
5. Koristite PHP aceleratore kao što su: APC, ZendOptimizer+ ili Xcache.
- APC – http://pecl.php.net/package/APC, Uvećajte APC.shm.size na 128 da bi se više podataka keširalo od strane APC-a.
- Xcache – http://xcache.lighttpd.net/
6. Instalirate samo neophodne Apache module.
7. Koristite Apache mod_expires i obavezno vodite računa o tome koliko dugo će datoteke biti keširane. Možete korisiti primer koji se nalazi ispod za Apache virtualhost postavke:
# Turn on Expires and set default to 0 ExpiresActive On ExpiresDefault A0 # Set up caching on media files for 1 year (forever?) ExpiresDefault A29030400 Header append Cache-Control "public" # Set up caching on media files for 2 weeks ExpiresDefault A1209600 Header append Cache-Control "public" # Set up 1 week caching on commonly updated files ExpiresDefault A604800 Header append Cache-Control "proxy-revalidate" # Force no caching for dynamic files ExpiresActive Off Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" Header set Pragma "no-cache"
8. Omogućite Gzip kompresiju preko htaccess-a.
9. Kompresujte izlaz (output), koristite zlib.output_compression ili mod_deflate.
10. Koristite CDN ili paralelni transfer za statične sadržaje (Pročitajte naš tekst o CDN besplatnim rešenjima). Postoji Magento dodatak koji vam može pomoći: One Pica Image CDN, ali pročitajte obavezno i sledeći stavku.
11. Nemojte koristiti previše različitih spoljnih izvora (za slike, iframe-ove, Twitter/Facebook fidove i slično) jer svaka dodatna DNS pretraga oduzima još vremena.
12. Uključite Apache KeepAlive postavke. KeepAlive je trik koji omogućava da se nekoliko HTTP zahteva sprovedu kroz jednu TCP konekciju. Podešavanje svake TCP konekcije oduzima vreme pa zato ovaj način može redukovati vreme potrebno za preuzimanje svih datoteka (HTML, JavaScript, slike..). Ovde treba biti i oprezan jer u nekim slučajevima može doći do zakrčenja servera u trenucima velikog broja poseta.
13. Svedite broj redirekcija na minimum.
14. Potrudite se da W3C izlaz bude kompatibilan. Greške usporavaju internet pregledače.
15. Zamenite Apache sa NginX ili Litespeed. Ako ovo nije opcija, probajte sa Zend serverom.
16. Isključite ili makar redukujte beleške koje veb server pravi (logging). To će u određenoj meri redukovati ispisivanje po disku.
- Isključite Acces Time Logging. Sa Magento vikija: Za Linux servere, ako imate Access Time Logging uključen na bilo kom MySQL-u, veb serveru ili keš particijama, probajte da ga isključite radi poboljšanja performansi. Ako koristite ext3 ili reiserfs, razmislite o bržim journal metodama koje mogu biti upotrebljene.
17. Komplajlirajte MySQL iz izvora.
18. Uvek koristite najnoviju Magento verziju. Nećete tako dobiti samo još više mogućnosti i ispravke grešaka, već Magento u svakoj novijoj verziji postaje sve brži.
19. Query Cach veličina: Modifikujte postavke vašeg MySQL servera da bolje iskoristi serverski RAM. Većina Linux distribucija podrazumevano obezbeđuje štedljivi MySQL paket radi kompatibilnosti sa što većim brojem hardverskih konfiguracija. Ako imate dovoljno RAMa(1GB+) možda ćete želeti da prepravite postavke.
20. Podesite ‘php_value memory_limit 128M’ u php postavkama ili htaccess datoteci kako bi bili sigurni da nećete ostati bez memorije.
21. Koristite memory-based datotečne sisteme za dinamične podatke (engl. dynamic data). Ako čuvate ove podatke (var/cache, var/session) na RAMdisku ili u tmpfs-u, I/O na disku je manji.
22. Izmeniti realpath_cache_size u php.ini.
realpath_cache_size=1M (careful, this is per apache process) realpath_cache_ttl=86400 (ok for production site)
23. Memcache je dokumentovan i objašnjen ovde: http://www.magentocommerce.com/boards/viewthread/9037/
24. Isključiti PHP open_basedir direktivu.
25. Eliminisati skeniranje strukture direktorijuma za .htaccess datoteke.
26. Preporučene vrednosti za innodb_buffer_pool_size:
- Kombinovano web i db server, 6 GB RAM: 2-3 GB
- Dedicated server baze podataka, 6GB RAM: 5 GB
- Dedicated server baze podataka, 12 GB RAM: 10 GB
27. innodb_thread_concurrency:
- 2 * [numberofCPUs] + 2
28. Query Cach: query_cache_size: 64MB, query_cache_limit: 2MB
29. Koristiti backend server za admin korisnike, backend aktivne procese (cron), generisanje keširanja celih stranica i za medijske upite.
30. Koristiti višestruke veb čvorove (za frontend servere) za nošenje sa pregledanjem i proverama.
31. Koristiti Varnish reverse proxy caching, za Magento objašnjeno od @alistairstead: Varnish your Magento store, make it fly!.
32. Ako imate popularan sajt koji je često pregledan od strane pretraživačkih mašina, možete uštedeti resurse izmenom postavki u robots.txt.
33. Isprobajte neke od ovih dodataka:
- M Turbo accelerator
- Magento Booster
- Tinybrick
34. Instalirajte Yireo DisableLog dodatak. Sprečićete ispisivanje tone podataka od strane Magento-a u bazi podataka.
Template
35. Optimizujte sve slike (template). Većina njih treba da bude maksimalno 10kb.
- Isecite beli prostor koristeći uređivač slika
- Koristite PNG8 ili GIF formate za slike, radije nego JPEG, i nemojte korisiti transparentnost u slikama
- Skalirajte slike: Uvek pravite slike u dimenzijama koje su vam potrebne na sajtu
- Koristite kompresiju za slike
- Koristite CSS Sprites.
36. Minimizujte Css, uklonite nekorišćeni kod.
37. Minimalno koristite Javascript.
38. Koristite lakše šeme (template) kao osnovu za vašu šemu.
39. Tačno definišite dimenzije slika.
40. Koristite Block cache i HTML output između ostalih dodataka.
41. Primenite Lazy Loader kao prototip.
Magento postavke
42. Uklonite svaki dodatak koji zapravo ne koristite.
43. Ugasite module koje ne koristite: System -> Configuration -> Advanced -> Advanced.
44. Uključite kompletno Magento keširanje:System -> Cache Management.
45. Koristiti offsite Stats Tracker kao što je Google Analytics, nikako one tipa onsite. Većina njih će koristiti Javascript, pa sami hostujte i Javascript.
46. Kombinujte Javascript i CSS datoteke: System ->Configuration ->Advanced ->Developer -> ‘Javascript settings’ i ‘CSS Settings’. Možete koristiti i ekstenzije koje će vam obaviti ovaj posao: Fooman Speedster extension.
47. Isprobajte neke od Magento dodataka za bolje performanse.
48. Uključite Magento Flat Catalog, ali imajte u vidu da se najbolji rezultati vide tek kod jako velikih kataloga.
49. Nemojte koristiti slojevitu navigaciju (layered navigation) jer može biti zahtevna kada su resursi u pitanju.
50. Koristite Magento Compilation opciju. Zabeleženo je da daje 25%-50% bolje performanse: System > Tools > Compilation. (nije neophodno ako imate byte code caching postavljen ispravno)
51. Koristite ispravno skladište za sesije, odaberite (tokom instalacije) datotečni sistem(File system) ili bazu podataka. Većina instalacija treba da koristi File system zato što je brži i ne izaziva rast baze podataka. Ukoliko će vaš sajt raditi na nakoliko servera, odaberite opciju database kako bi korisnički podaci o sesiji bili nezavisni od servera sa kog se uslužuju. Više podataka vidite ovde: Ashley Schroder na Magebase.com.
52. Ograničite broj proizvoda ukupno i broj proizvoda na stranici koja se pregleda.
53. Postavite atrubute za frontend opcije na “Yes” ukoliko ćete ih zaista i koristiti. Ostale postavite na “No”. Ne koristite ih u brzim pretragama, napredno poređenje u pretragama i sl. : Catalog -> Attributes -> Manage Atributes -> Frontend Properties.
54. Onemogućite Magento log: System -> Configuration -> Advanced -> Developer -> Log Settings (podrazumevano je onemogućeno – Disabled).
Testiranje brzine, analiza, monitoring
55. Testirajte Magento sajt sa Magento Speed Test (by Ashley Schroder)
56. Pokrenite skeniranje vašeg sajta preko websiteoptimization.com.
57. Koristite Google Page Speed Firefox extension ili Yahoo Yslow za predloge u vezi sa Google-om ili Yahoo-om.
58. Implementirajte Google Speed merenja u Analitici: Site Speed Analytics Report.
59. Pratite brzinu sajta i budite obavešteni ukoliko se javi downtime:
- Mon.itor.us
- Pingdom
Backend ubrzanje
60. Koristiti K-Meleon ako koristite Windows za opšte Admin poslove. Renderuje brže Magento zahtevniji JS back-end od bilo kog drugog pregledača.
61. Koristiti GoogleGears extension from Yireo.com za keširanje statičnih datoteka lokalno.
62. Koristiti lokalnu pc/mac aplikaciju za upravljenje Magentom (npr. mag-manager.com).
Žrtvovati Magento performanse radi funkcionalnosti?
Ukoliko želite da žrtvujete performanse radi realne funkcionalnosti koju vaša konkurencija nema, možete to uraditi i to neće biti problem. Korisnici ne idu uvek i po svaku cenu na sajtove koji brže poslužuju svoju ponudu, najveći deo njih traga za dobrom i funkcionalnom pretragom, opcijama za razvrstavanje ili vizuelno usklađenim pregledom. Sigurno je da nećete moći da primenite sve ove preporuke iznad i jako je bitno naglasiti da svaki sajt traži posebne postavke u zavisnosti od funkcije, hardvera i identiteta. Međutim, svaka od stavki iznad može biti dobra polazna tačka kod rešavanja mnogih problema i zahteva.
Samo reči pohvale za CMS, iako sam imao mnogo problema kod otvaranja veb prodavnice. Srećom Magento zajednica je velika i za sve je lako naći odgovor.
Da bi se pojednostavio proces – mi koristili ovu uslugu https://store.plumrocket.com/magento-services/magento-speed-optimization-service.html
Ova kompanija je stvarno super. Oni obezbeđuju sve Optimization usluge kao što je opisano .