|
Atunci cand site-ul este vizitat de sute de mii de utilizatori, phprel nu cedeaza. Rareori in segmentul de piata mijlociu sau de "entry-level" aplicatiile dispun de tehnologie de caching. Dar mai rar chiar decat atat, aplicatiile web din orice segment dispun de o tehnologie de "content caching" comparabila ca performanta cu cache-ul adaptiv oferit impreuna cu phprel. In phprel, toate modulele si componentele comunica intre ele si lucreaza impreuna pentru a va oferi un rezultat de care sa fiti mandru: o aplicatie completa, functionala si rafinata. Si completitudinea inseamna si performanta: cereri http servite in cateva milisecunde. Cum reuseste phprel sa ofere toate acestea?
Parte din nucleul phprel este si modulul de caching adaptiv care include tehnologia inovativa cacheSentinels. La afisarea unei instante a unei pagini, phprel salveaza o copie a continutului afisat in browser, pentru afisari ulterioare. La solicitarea aceleiasi instante a paginii de catre un alt utilizator sau chiar de acelasi, phprel verifica daca pagina salvata este inca valabila, iar in caz afirmativ afiseaza continutul direct din cache. Verificarea dureaza doar cateva milisecunde si este extrem de precisa: sunt monitorizate sursele html, parametrii GET, POST, sesiunea php, si chiar schimbarile efectuate in baza de date, precum si continutul propriu-zis al paginii pentru a verifica daca exista elemente care s-ar putea modifica (cum ar fi chei de securitate). In plus, cache-ul se adapteaza experientelor anterioare: exista un numar maxim de afisari din cache, inainte de reimprospatare, daca nici o alta circumstanta nu cauzeaza reimprospatarea, iar acest numar maxim stabilit de dumneavoastra nu este fix, in functie de esecurile sau succesele anterioare variaza automat pentru a gasi echilibrul perfect intre conditiile reale in care expira cache-ul si numarul de afisari oferite.
Cache-ul are multiple moduri de functionare si poate fi stabilit individual pe fiecare pagina a aplicatiei, si chiar pe fiecare element al paginii. Exista doua categorii de caching: static si dinamic. Atunci cand o pagina sau cel mai adesea un element de pagina este salvat in cache static, el este afisat fara monitorizarea bazei de date si fara adaptabilitate de un numar de ori, sau pe parcursul unui interval de timp prestabilit. Acest cache este aproape imediat, nefiind necesare verificari complicate. Cand continutul afisat pe o pagina sau intr-un element este de asa natura ca nu se poate schimba mai repede de un anumit numar de afisari, sau de un interval de timp, acesta este tipul de cache recomandat. Cel dinamic in schimb presupune monitorizarea bazei de date pentru modificari ce pot afecta pagina, iar aceasta monitorizare este de doua tipuri: activa sau contextuala. Monitorizarea activa presupune verificarea bazei de date pentru a determina daca exact informatia necesara paginii s-a schimbat, in timp ce cea contextuala presupune monitorizarea modificarilor in momentul in care ele sunt realizate cu aplicatia insasi, o varianta mai rapida dar mai putin flexibila. Bineinteles, toate aceste operatii se petrec automat si in fractiuni de secunda, iar continutul cache-ului va fi mereu actualizat si paginile vor fi servite intr-un timp extrem de scurt.
Tehnologia inovativa cacheSentinels imbunatateste performanta aplicatiilor cu un numar foarte mare de vizitatori, intrand in functiune atunci cand mai multi utilizatori acceseaza simultan aceeasi pagina al carei continut din cache tocmai a expirat. In majoritatea cazurilor, cand pagina este afisata din cache, timpul necesar procesarii unei cereri este foarte mic si aplicatia poate face fata cu succes chiar si unui flux mare de solicitari. Insa atunci cand cache-ul nu mai este valabil si trebuie reimprospatat, resursele pot fi epuizate foarte repede daca un numar mare de utilizatori acceseaza simultan pagina. Accesele fiind simultane, cache-ul apare ca expirat pentru toate, si toate incep regenerarea paginii si continutului cache-ului. Acest lucru inseamna o procesare lenta pentru fiecare dintre ei si poate suplimentar duce la epuizarea resurselor de memorie, moment in care serverul va incepe functionarea cu memorie virtuala incetinind suplimentar executia paginii. Solutia: tehnologia cacheSentinels. Firele paralele de executie, corespunzatoare cererilor simultane, comunica intre ele si in momentul in care primul fir incheie procesarea si genereaza continutul il comunica tuturor celorlalte, scurtand timpul de executie al firelor succesoare. Aceasta abordare este bazata pe observatia ca mai multe cereri simultane nu sunt cu adevarat simultane, fiind decalate intre ele cu zeci sau sute de milisecunde. Transferand continutul generat de la primul fir care reuseste generarea la celelalte, se scurteaza timpul total de procesare si se impiedica consumarea resurselor.
Nu in ultimul rand, cache-ul stocheaza si rezultatele cererilor AJAX, accelerand si raspunsul la cereri asincrone. In plus, aveti la dispozitie interfata de management si mentenanta – Web Assistant – in care se poate monitoriza performanta aplicatiei si se pot defini politici de caching individuale pe pagina. Se pot vizualiza detalii referitoare la numarul de "cache hits", "cache misses", timpul de incarcare in diverse situatii (cu cache, fara cache, cu cacheSentinels, cu cache partial – doar al anumitor elemente), tendinta pe ultimele zile, timpul castigat cu cache, si altele. Informatii exacte si esentiale si un nucleu performant pentru o aplicatie pe masura asteptarilor.
|