Ce face un cache? Ce sunt datele stocate in cache?

Discutam despre performanta unui magazin online sau despre performanta unui website… dar si despre ce se intampla pe dispozitivul unui vizitator. Deci, trebuie privit din doua perspective tot subiectul asta. Atat din punctul de vedere al unui vizitator/client, un om obisnuit ce navigheaza pe un site sau magazin online, cat si din punctul de vedere al unui detinator de website sau magazin online.

Ce se intampla cand accesam un website?cache

Incepem usor, din punct de vedere al unui vizitator / utilizator obisnuit.

Browserul nostru stocheaza niste date pe dispozitivul de pe care navigam. Printre altele, enumeram: poze, fisiere ce tin de aspectul/functionalitatea siteului respectiv, cookies si altele. Stocand aceste date pe dispozitivul de pe care navigam, acestea nu mai trebuiesc descarcate din nou in momentul in care dam un refresh, revizitam site-ul mai tarziu sau navigam pe o alta pagina in interiorul aceluiasi site. Astfel, scad timpii de incarcare si este redus consumul de date (nu mai trebuiesc transferate atatea date intre dispozitivul nostru si server). 

Aceste fisiere au de obicei o durata de ‘viata’. Dupa un anumit timp, acestea sunt redescarcate pentru a mentine continutul/aspectul la zi.

Deci, mecanismul de cache al browserului ne imbunatateste viteza, dar ocupa spatiu pe hard disk/ssd.

O data la ceva timp, este recomandat sa golim acest cache al browserului, atat pentru a elibera spatiu, dar si pentru a ‘obliga’ browserul sa ia informatii noi de la site-ul/magazinul la care ne conectam. De exemplu, uneori anumite modificari subtile la aspectul unui site vor fi vizibile abia dupa ce cache-ul expira sau golim cache-ul browserului.

Despre cache si site-ul sau magazinul tau

performanta si cache
Sursa poza: wprocket.me

Pe langa acest mecanism implementat in browsere, mai exista si pe partea de gazduire a unui magazin/site un mecanism de cache. Acesta se ocupa cu imbunatatirea performantei cu care serverul poate trimite date catre utilizatori/vizitatori si cu reducerea load-ului(incarcarii) serverului nostru. Principiul de baza este similar cu mecanismul browserelor: stocam date pentru a le putea accesa (si servi in cazul acesta) mai rapid.

Pentru a nu complica lucrurile prea mult, vom discuta in principal despre cele mai populare platforme: Wordpress si Magento.

Pentru platformele amintite, exista multe extensii, care se lauda ca vor imbunatati performanta site-ului sau a magazinului drastic. Majoritatea nu doar se lauda, ci o si fac. Dar, pentru a fi cu adevarat eficiente si pentru a vedea rezultate mult mai bune din punct de vedere al performantei, ele au nevoie de anumite capabilitati ale serverului/contului de gazduire pe care platforma noastra se afla.

Care-i ideea si de ce atata obsesie pentru performanta? Un site sau magazin rapid reduce bounce rate-ul, ajuta la SEO, denota un magazin/site ingrijit si ‘viu’… si… nu enerveaza utilizatorii.

Deci…

Intra in discutie planul de gazduire ales. Pe cand pe o gazduire de tip shared, suntem destul de limitati, pe un VPS/server dedicat, avem mai multa libertate(si resurse). O solutie de mijloc, o reprezinta conturile de gazduire de tip shared, optimizate pentru o anumita platforma (exemplu: gazduire shared optimizata pentru Wordpress, sau special pentru Magento). Acestea de obicei vin cu niste setari mai bune pentru platforma respectiva, si uneori ofera si un tip de cache mai performant.

Pe partea de server, sunt disponibile diverse mecanisme de cache, care ne pot ajuta sa obtinem timpi de incarcare mai buni. Niste exemple, mai des intalnite: APC, Xcache, Redis, Xcache, Zend OPcache si Memcached. Pe cand primele sunt acceleratoare PHP ( o explicatie mai non-tehnica: de exemplu APC compileaza fisierele php si le ruleaza intr-un mod ‘optimizat’, astfel imbunatatind performanta. Acesta nu mentine in cache direct rezultatele fisierelor php), ultimul (Memcached) este un pic diferit, dar in principiu are acelasi scop: de a reduce timpii e incarcare ai aplicatei noastre.(poti citi mai multe despre Memcached aici, in engleza)

De obicei detalii atat de tehnice precum configurarile de cache de pe server sau diverse ajustari nu tin de administratorul unui site sau magazin, ci de dezvoltatorul sau. Dar, daca detinatorul sau administratorul aleg o gazduire mai slabuta, automat taie din optiunile dezvoltatorului, in ceea ce priveste optimizarea pentru performanta. Din aceasta cauza, consider ca este destul de important ca toata lumea sa inteleaga ca banii dati pe o gazduire mai puternica nu sunt bani aruncati in vant, si sa inteleaga ca procesul real de optimizare trece de simpla instalare a unui plugin/extensie.

Wordpress – configuratii cu rezultate bune din experienta noastra

Niste configuratii pe care am obtinut rezultate bune:

  • Wordpress + WProcket + Memcached;
  • Wordpress + W3TC + Memcached;
  • Wordpress + W3TC + APC;

Gazduirea de buget preferata de noi este cea oferita de MxHost, in sectiunea gazduire Wordpress. Acestia ofera si 1Gb Memcached. Se misca foarte bine. Gazduirea preferata ideala, clar, este un VPS, dar la inceput pentru multi poate reprezenta un minus prin costuri ridicate (mai ales daca consideram si managementul).

Magento – configuratii cu rezultate bune din experienta noastra

In ceea ce priveste Magento, de obicei lucrurile nu stau chiar atat de simplu, dar mai jos sunt niste configuratii in linii mari (nu sunt intr-o ordine anume):

  • Magento + Lesti + APC – trebuie mentionat ca Lesti nu are un crawler, pentru a ‘incalzi’ cache-ul deci trebuie venit cu o solutie proprie aici; (noi am folosit un sitemap crawler propriu)
  • Magento + Mirasvit FPC + Redis + Varnish;
  • Magento + Mirasvit FPC + APC;
  • Magento + Potatocommerce FPC + Redis (+ Varnish);

Ca gazduire, am vazut rezultate ok cu solutii shared, mai ales de inceput pentru un magazin nou care inca nu are un volum de trafic prea ridicat (recomand totusi gazduiri shared optimizate pentru Mgento… Lesti + Crawler fac minuni in multe cazuri), dar de obicei se doreste instalarea pe un VPS de 2Gb pentru a fi siguri ca facem fata cerintelor Magento. Cu un VPS/server dedicat, putem merge mai departe si sa optimizam si setarile Apache/Ngnix, Php si Mysql pentru a obtine maximum de performanta posibil de la configuratia noastra.

Ce nu poate face un cache pentru site-ul sau magazinul tau?

Daca trecem direct la implementarea unei metode de cache, pentru a rezolva problemele de performanta, e ca si cum am matura si pune mizeria sub pres. Trebuie intai sa ne asiguram ca nu avem fragmente de cod prost optimizate, extensii cu probleme si alte probleme tehnice. Pe cand un cache ar putea in unele cazuri sa ascunda astfel de probleme, in momentul in care serverul va fi lovit de un trafic ridicat, se vor vedea problemele.

De cele mai multe ori, problemele vin de la numarul ridicat de extensii instalate pe platforma respectiva. Daca in Wordpress de cele mai multe ori pierdem doar performanta, in Magento ne putem lovi de probleme serioase si conflicte intre extensii, pe langa scaderea de performanta.

Deci, un mecanism de cache, oricat de bun, nu te poate opri sa instalezi n extensii, si nici nu poate rescrie codul prost in cod bun, performant.

Concluzii

Un articol destul de generalist. Putem intra in detalii mai multe despre aproape orice idee din articol. Daca vrei sa afli mai multe despre o anumita idee gasita in articol (sa zicem configuratie Redis ok pe Magento, sau cand si cum ne dam seama daca Mysql ne trage in jos in Magento …etc) sau detalii despre cum sa gasim probleme de performanta inainte de a recurge la o solutie de cache, nu ezita sa lasi un comentariu si vom discuta mai pe larg despre acel lucru.

Totodata, daca acest articol ti-a fost util da-i un share prietenilor tai poate ii ajuta! As fi curios sa aflu ce configuratie folosesti pentru magazinul sau blogul/site-ul tau si daca esti multumit de performanta sa actuala 🙂