Cum să câștigi eficiență maximă cu Magento 2. Interviu cu Max Pronko
Publicat: 2017-01-17Max Pronko este unul dintre acei guru Magento pe care trebuie să-i urmeze un începător. Este un expert Magento și un vorbitor public, un dezvoltator certificat Magento și un blogger popular Magento 2.
Cu 10 ani de experiență în dezvoltare de software și consultanță în Magento, Max a proiectat și implementat cu succes produse de înaltă calitate, de la scară medie până la scară mare.
Urmărește-l pe Max pe Twitter.
Recent, Max a fost la Meet Magento Hungary și a prezentat cazuri reale de utilizare a optimizării performanței în Magento 2 keynote . În acest sens, am dori să începem interviul nostru cu câteva întrebări care se referă direct la această prezentare.
Partea 1: Provocări comune ale extensiilor Magento
Aproape fiecare comerciant Magento 2 folosește extensii 3d care îmbunătățesc foarte mult funcționalitatea implicită a platformelor, pe de o parte, dar, pe de altă parte, influențează negativ fluxul de lucru de performanță.
Natalie: În general, cum poți evalua calitatea codului extensiilor 3d și modul în care acestea pot influența încărcarea serverului?
Max: Mulțumesc pentru oportunitatea de a vorbi despre Magento 2, Natalie. Îți urmăresc blogul de mai bine de un an și de fiecare dată când îl vizitez, găsesc câteva articole interesante. Multumesc pentru asta.
După cum probabil știți, îmi place să revizuiesc codul din cauza numărului de motive:
- În primul rând, câștig experiență și observ tehnici interesante despre cum să convertesc cerințele de afaceri în caracteristici complet funcționale, de înaltă calitate. Mai ales când vine vorba de Magento 2.
- În al doilea rând, mă ajută să înțeleg cât de bună este partajarea cunoștințelor în ecosistemul Magento.
95% dintre extensiile terță parte necesită o revizuire extinsă a codului și îndrumări pentru îmbunătățirea codului.
Deocamdată am făcut o revizuire a codului extensiilor terță parte de aproximativ 2 ani. Din păcate, nu pot spune că sunt mulțumit de rezultatele pe care le-am obținut: 95% dintre extensiile terță parte necesită o revizuire extinsă a codului și îndrumări pentru îmbunătățirea acestuia. Lasă-mă să fiu foarte tăcut în privința standardelor de codare.
Am probleme cu performanța tuturor paginilor site-ului, chiar dacă o extensie creează și acoperă doar o selecție de pagini cu anumite funcționalități specifice. De exemplu, includerea unui bloc care nu poate fi stocat în cache în fișierul implicit de configurare a aspectului. Magento dezactivează automat memoria cache a paginilor pentru toate paginile.
Un alt exemplu este utilizarea operațiunilor backend care necesită timp fără a stoca rezultatele execuției într-o variabilă de clasă. Poate reduce dramatic încărcarea primei pagini.
Am avut șansa să examinez aproximativ 60 de extensii, inclusiv cele plătite și gratuite, așa că evaluarea mea se bazează pe acest număr. Cu siguranță, există extensii pe care ți-aș putea recomanda să le folosești.
Natalie: Care sunt cele mai frecvente probleme de optimizare a codului în opinia ta?
Nu am văzut niciodată utilizarea claselor Proxy în extensiile terță parte. Cu toate acestea, poate reduce timpul de inițializare recursivă a obiectului.
Max: De obicei extensiile sunt create într-o singură rundă, fără optimizare a performanței, pe care o pot numi „Implementare și livrare”. O a doua rundă apare rar, iar codul este lăsat neoptimizat. De exemplu, nu am văzut niciodată utilizarea claselor Proxy în extensiile terță parte . Cu toate acestea, poate reduce timpul de inițializare recursivă a obiectului.
Natalie: Ce sfaturi de optimizare le puteți oferi acelor dezvoltatori începători, care își scriu primele extensii pentru Magento 2?
Max: Este o idee grozavă să vă testați extensiile cu Magento 2 în afara mediului local, de preferință undeva în cloud. În zilele noastre, nu este costisitor să ai un server virtual de la DigitalOcean sau AWS pentru 5-10 USD și să rulezi o testare de bază de utilizator end-to-end . Cel puțin, poate prezenta diferențe de performanță destul de bune în comparație cu versiunile Magento 2.x din nou.
Partea 2: Optimizarea performanței M2
Natalie: Ce poți spune despre particularitățile blocului cache (ce este mai bine să folosești/evitați în cheile cache)?
Max: Magento 2 Community Edition vine cu suport pentru server proxy Varnish. Este grozav pentru toți comercianții care nu își fac griji cu privire la vizitatorii pentru prima dată când memoria cache nu este gata. Block cache intră în joc pentru paginile care nu sunt stocate în Varnish. S-ar putea să nu vă așteptați la lac pe pagini precum Cont de client, Căutare în catalog, Coș de cumpărături.
Cheia cache adecvată per bloc este foarte importantă pentru a crea intrări adecvate în cache și pentru a crește accesările cache într-un spațiu de stocare backend, cum ar fi Redis. În mod ideal, toate entitățile care sunt implicate în randarea front-end ar trebui să implementeze interfața Magento\Framework\DataObject\IdentityInterface care vine cu metoda getIdentities() . Această metodă este foarte utilă dacă trebuie să compilați cheile cache adecvate pentru cache-ul bloc.

Natalie: Ceva despre optimizarea interogărilor SQL?
Max: Pentru optimizarea SQL, de obicei încerc să enumerez toate variațiile posibile ale datelor selectate dintr-un tabel. În mod ideal, toate interogările ar trebui să lovească Indexurile MySQL pentru o performanță mai bună. Știu că este un caz ideal, totuși, poate ajuta cu adevărat la accelerarea interogărilor pe un număr mare de înregistrări dintr-un tabel. Desigur, optimizarea interogărilor SQL este un subiect uriaș, așa că pot vorbi despre asta ore întregi.
Partea 3: Căutare Magento 2
Magento 2 se poate lăuda că are o căutare mai bună decât M1, dar totuși interogările compuse, greșelile de scriere, corectarea automată și sinonimele nu sunt acceptate. Mai mult, căutarea M2 nu scanează categorii și pagini CMS.
Natalie: Care sunt cele mai bune modalități de a îmbunătăți căutarea în ediția CE: extensii sau motoarele de căutare externe?
Max: Mă gândesc să folosesc Elasticsearch pentru Magento 2 Community Edition. Desigur, necesită dezvoltare, fie în interior, fie folosind extensii terță parte. Pentru unul dintre proiectele Magento 2, am folosit o căutare încorporată cu configurație suplimentară, cum ar fi sinonime și redirecționări către o pagină de destinație pentru interogări de căutare obișnuite. Cu toate acestea, aceasta este o soluție pe termen scurt, aș merge cu niște servicii externe.
Natalie: Vorbind despre motoarele de căutare externe, care este mai bun pentru site-urile web de date mici/medii/mari: Solr, Sphinx sau Elasticsearch (sau altele)?
Max: Pentru site-urile web mici, aș lua în considerare căutarea implicită Magento 2. Pentru altele, este mai mult despre cât de bune este extensia și documentarea în cazul în care doriți să vă construiți propria soluție. Elasticsearch vine ca opțiunea mea preferată.
Natalie: Puteți recomanda extensii de căutare care pot îmbunătăți funcționalitatea implicită?
Max: Am experiență pentru a revizui modulul de completare automată pentru Magento 2 realizat de MageWorx. Îmbunătățește semnificativ experiența utilizatorului în comparație cu funcționalitatea implicită de sugestie automată Magento 2 Community Edition. Modulul MageWorx AutoComplete va genera mai multe conversii și vânzări pentru un comerciant. În ceea ce privește implementarea codului, scorul meu este de 4,5 din 5. Există câteva îmbunătățiri minore care ar putea fi făcute pentru a crește experiența generală a dezvoltatorului. Unul dintre lucrurile frumoase despre modulul de completare automată este faptul că se poate descărca gratuit. Voi lua în considerare utilizarea și voi recomanda acest modul pentru comercianții Magento 2.
În afară de asta, voi continua să examinez modulele legate de căutare pentru Magento 2 și voi oferi feedback-ul meu cu privire la calitatea codului.
Partea 4: Provocări Magento 2
Natalie: Sunteți un dezvoltator Magento testat în luptă, după ani de lucru cu Magento, care sunt cele mai provocatoare probleme pe care le aduce a doua versiune a platformei?
De exemplu, după cum știu, chiar și modificări ușoare ale codului în M2 duc la o serie de acțiuni (cum ar fi bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile etc. )
Max: Cred că, în majoritatea cazurilor, când un dezvoltator stă în fața PHPStorm și scrie un cod, nu există timp pentru a pătrunde cu adevărat în arhitectura Magento 2. De exemplu, cunosc câțiva dezvoltatori buni care se plâng de componentele UI și de lipsa de exemple reale despre utilizarea lor. Noile DevDocs Magento oferă o imagine de ansamblu bună asupra componentelor UI.
Dezvoltatorii cu experiență bună în Magento 1 consideră Magento 2 complex și uneori provocator. Noua tehnologie aduce întotdeauna noi oportunități de a învăța ceva nou.
Există chiar și o poză despre asta.
Natalie: Și în sfârșit, Magento 2 a fost lansat în noiembrie 2015. Crezi că este complet gata pentru ca comercianții din întreaga lume să înceapă să migreze?
Max: Absolut DA. Magento 2, ca software, are mai multe beneficii decât un număr de probleme deschise pe GitHub. În mod evident, poate aduce mai multe venituri în comparație cu Magento 1 în cazul unei strategii de migrare și marketing bine planificate. Îmi amintesc că am spus „Da” unuia dintre proiectele noastre Magento 2 în august 2015, când era doar o versiune Beta. Acum suntem mai mult decât fericiți să folosim și să construim site-uri web de comerț electronic bazate pe Magento 2.
Echipa mea de la Pronko Consulting va fi bucuroasă să aducă la viață o nouă viziune și să lanseze un nou site web Magento 2.
*****
Vrem să-i mulțumim lui Max pentru acest interviu și să-i dorim lui și echipei sale un an productiv și de succes.