Caching pentru WordPress
Aceasta este prima postare dintr-o serie în care vom analiza diverse aspecte ale performanței site-ului web și vom încerca să le explicăm în termeni de înțeles de către non-dezvoltatori. Acest prim articol se referă la conceptul de cache pentru WordPress.
Mulți utilizatori de WordPress au auzit că trebuie să „folosească un plugin de cache” și pot folosi chiar unul fără să înțeleagă cu adevărat ce face. Poate fi destul de tehnic, chiar și pentru mulți dezvoltatori, astfel încât lipsa de înțelegere duce la frustrare atunci când lucrurile merg prost.
Să încercăm să o demitizăm puțin.
Există mai multe tipuri diferite de cache. În acest articol vorbim în mod specific caching pentru WordPress „cache de pagini”. Acesta este genul de cache pe care îl fac pluginuri precum WP Rocket, WP Super Cache, WP Fastest Cache și altele.
Ce Face Cache-ul?
Majoritatea articolelor vor explica cache-ul în termeni de genul:
Când un vizitator vine pe site-ul dvs. WordPress, browserul său vorbește cu serverul dvs. web care încarcă WordPress – aceasta implică procesarea PHP, efectuarea de cereri către baza dvs. de date, trimiterea fișierelor înapoi în browser pentru a fi în cele din urmă asamblate într-o pagină web complet formată. Acest lucru poate dura câteva secunde – o eternitate pentru utilizatorii de internet moderni.
Memorarea în cache înlocuiește acest proces prin trimiterea unui fișier HTML static în browser, ceea ce este mult mai rapid.
Deși toate acestea sunt adevărate din punct de vedere tehnic, pentru majoritatea oamenilor, nu prea are sens și nu vă ajută să înțelegeți ce se întâmplă.
Caching – Imagine de Ansamblu
Una dintre cele mai bune explicații cu privire la cache-ul pe care l-am întâlnit a fost la o discuție WordCamp (mi-aș dori să-mi amintesc cine a fost vorbitorul pentru a-l putea acredita în mod corespunzător).
El a întrebat publicul, cât face 3.549.752 împărțit la 23.234 (sau ceva la fel de complex)?
Toată lumea a tăcut. Unii oameni au scos calculatoare pentru a face calculele și în cele din urmă, cineva a strigat răspunsul după câteva secunde.
Apoi, vorbitorul a pus din nou aceeași întrebare. De data aceasta toată lumea a fost capabilă să strige imediat răspunsul.
Acesta este un demo excelent al conceptului. Procesul inițial consumator de timp s-a făcut o dată, apoi după aceea, când a fost pusă aceeași întrebare, răspunsul a fost ușor disponibil și a fost livrat mult mai repede.
Atunci când este aplicat în contextul site-ului dvs. web, acest lucru se traduce prin capacitatea de a furniza o pagină web cu un timp de răspuns foarte rapid, fără a fi nevoie să efectuați toate procesările care necesită mult timp, de fiecare dată când pagina se încarcă.
Primul vizitator pe o anumită pagină de pe site-ul dvs. „pune întrebarea” și serverul dvs. oferă răspunsul. Data viitoare când un vizitator merge pe aceeași pagină, adică. „Pune aceeași întrebare”, serverul dvs. vă poate oferi răspunsul, adică pagina web răspunde mult mai rapid.
Ce înseamnă acest lucru pentru site-ul dvs. WordPress?
Când aveți un plugin de cache, acesta este responsabil pentru furnizarea acelor răspunsuri rapide. Pluginul face practic capturi instantanee ale tuturor paginilor dvs. web.
Toate greutățile pe care WordPress le face în mod obișnuit pentru a afișa pagina web se fac de prima dată când o pagină este vizitată. Odată ce acest proces s-a întâmplat pentru prima dată, pluginul dvs. de cache face un „instantaneu” și apoi, când următoarea persoană vine pe site-ul dvs., acesta scoate instantaneul în loc să treacă din nou întregul proces.
Static vs. Dinamic
În termeni tehnici, „instantaneul” este un fișier HTML static. Static înseamnă că nu se schimbă de la sine. Conținutul acestuia va rămâne același, cu excepția cazului în care ceva îi spune altfel.
Dacă v-ați uitat vreodată la site-ul dvs. prin FTP (sau managerul de fișiere din cPanel), nu vedeți un fișier pentru fiecare pagină de pe site-ul dvs. Acest lucru se datorează faptului că pagina este generată dinamic de fiecare dată când se încarcă – nu există fișier fizic.
Când aveți cache, veți vedea de fapt un folder cache cu toate fișierele HTML din acesta. Acele fișiere vor fi modificate numai când cache-ul este re-împrospătat.
Aici lucrurile devin puțin complicate….
Imaginați-vă că faceți o fotografie a casei dvs., care este maro. Mâine îți vopsești casa în albastru. Fotografia pe care o aveți despre casa dvs. este acum inexactă. Dacă doriți o fotografie actualizată, trebuie să faceți un nou instantaneu.
Casa este site-ul dvs., iar fotografia este versiunea în cache.
Deci, aveți o versiune cache a unei pagini pe site-ul dvs., apoi schimbați ceva, poate publicați o postare nouă, adăugați un widget nou, vă schimbați tema etc., iar acum versiunea cache este depășită.
Deci, dacă doriți ca vizitatorii site-ului dvs. să vadă noua modificare pe care ați făcut-o, trebuie să ștergeți memoria cache pentru pagina respectivă, astfel încât să poată fi generat un nou instantaneu.
Unele plugin-uri de cache (cum ar fi WP Rocket) gestionează acest lucru intuitiv. Pluginul vede că v-ați „pictat casa”, adică ați publicat o nouă postare (de exemplu), așa că face automat un nou instantaneu pentru dvs.
În acest fel, cache-ul dvs. rămâne actualizat.
De Ce Se Pare Că Cache-ul Sparge Chestii?
Când faceți un instantaneu al conținutului dvs., este ca un moment înghețat în timp. Dacă site-ul dvs. WordPress este ca un film, memoria cache este ca un cadru de înghețare din filmul respectiv.
Acest lucru nu va conta prea mult dacă tot ce aveți pe site-ul dvs. sunt postări de blog sau pagini care constau din text, fotografii, videoclipuri: lucruri care nu se schimbă decât dacă dvs. decideți să le modificați (cum ar fi să intrați în editor și să schimbați o fotografie sau un text).
Dar site-urile web moderne pot avea o mulțime de funcții fanteziste, cum ar fi conținutul care se actualizează automat (fără a face nimic) sau care se ajustează în funcție de cine se uită la pagină.
Câteva exemple:
Poate aveți un widget din bara laterală care afișează fluxul dvs. Twitter. Când postați un nou Tweet, nu accesați manual site-ul dvs. și nu îl postați acolo. Aveți un plugin sau un cod care vorbește cu Twitter și actualizează automat widgetul pentru dvs. – s-ar putea întâmpla în timp ce dormiți. Acesta este un exemplu de conținut dinamic, nu static.
Un alt exemplu ar putea fi un site de comerț electronic care are o pictogramă coș de cumpărături pe fiecare pagină, care vă arată câte articole sunt în coșul dvs. de cumpărături. Această caracteristică este specifică fiecărui vizitator, deoarece fiecare vizitator are un număr diferit de articole în coș. Deci, acest număr este generat dinamic pentru fiecare vizitator.
Acestea sunt doar câteva exemple obișnuite de conținut care trebuie tratat diferit prin cache. Dacă lucrurile nu sunt codificate corect și utilizați un plugin de cache, veți descoperi că lucrurile nu funcționează corect. Feed-ul dvs. Twitter nu se actualizează la fel de des ca în mod normal sau pictograma coșului nu afișează cu precizie numărul de articole din coș.
Așadar, aici trebuie să fiți puțin tehnic, deoarece dacă aveți acest tip de problemă pe site-ul dvs., veți avea nevoie de termenii tehnici pentru a găsi o soluție.
În termeni tehnici, dacă funcțiile dvs. dinamice (de la bannere rotative, sisteme de vot, fluxuri sociale, caracteristici specifice utilizatorului etc.) utilizează PHP pur pentru a afișa rezultatul, acestea nu vor funcționa cu cache.
Acest lucru se datorează faptului că PHP nu rulează pe o pagină cache: PHP face parte din munca care necesită mult timp, care este întreruptă atunci când utilizați stocarea în cache a paginilor.
Fără stocarea în cache, de fiecare dată când o persoană vine pe site-ul dvs., browserul solicită serverului dvs. web pagina web. PHP este un limbaj de programare care rulează pe serverul web pentru a procesa această solicitare: găsirea conținutului potrivit din baza de date și trimiterea acestuia înapoi la browser. Este ca un mesager, care transportă informații din baza de date în browserul vizitatorului.
Anterior am spus că stocarea în cache creează instantanee.
PHP este angajat prima dată când o pagină se încarcă, dar odată ce instantaneul este luat și transformat într-un fișier HTML static, PHP intră în pauza de masă. Aceasta înseamnă că nu vor mai veni mesaje din baza de date către browserul dvs. prin PHP.
Deci, atunci când lucrurile trebuie să se schimbe pe site-ul dvs., cum ar fi fluxul dvs. Twitter, aveți nevoie de un alt mesager. În acest caz, este un alt limbaj de programare numit JavaScript (JS). JS funcționează mai degrabă din partea browserului decât de pe server, astfel încât chiar și atunci când pagina dvs. este stocată în cache și PHP se relaxează cu o ceașcă de ceai, puteți apela în continuare la JavaScript și la fratele său AJAX pentru a face ceva pentru dvs.
Deci, orice lucru dinamic trebuie tratat folosind JavaScript/AJAX, deoarece acest lucru va rula pe o pagină cache.
Pentru utilizatorul obișnuit de WordPress, aceasta înseamnă:
- Vă rugați dezvoltatorul să codeze lucrurile în acest fel;
- Găsiți un plugin care gestionează conținutul dinamic cu JavaScript și afirmă că este compatibil cu stocarea în cache a paginilor;
- Dacă niciuna dintre cele de mai sus nu este posibilă, dezactivați cache-ul pentru pagina respectivă sau eliminați caracteristica dacă este mai puțin importantă pentru experiența utilizatorului decât viteza.
Pentru dezvoltatori acest lucru înseamnă:
- Utilizați Javascript/AJAX pentru elemente dinamice.
Sper că acest lucru va ajutat la clarificarea lucrurilor și ce este Caching pentru WordPress numai este un mister pentru dvs.