Un ghid pentru tranzitorii în WordPress

Publicat: 2023-02-12

În calitate de dezvoltator WordPress, probabil că știți deja cât de importantă este performanța pentru un site web de succes. Cu toate acestea, înțelegerea tranzitorii în WordPress și modul în care acestea vă vor ajuta să vă optimizați proiectele poate fi puțin dificilă.

Din fericire, atunci când le descompuneți, tranzitorii nu sunt chiar atât de greu de înțeles. Atâta timp cât țineți cont de câteva linii directoare cheie, ar trebui să fiți pe cale să le încorporați în următorul plugin WordPress.

În această postare, vom oferi o imagine de ansamblu asupra a ceea ce sunt tranzitorii WordPress, împreună cu cum și când să le folosiți. Este mult teren de acoperit, așa că haideți să trecem direct la el!

Cuprins
1. Ce sunt tranzitorii WordPress?
2. Beneficiile utilizării tranzitorii pe site-ul dvs. WordPress
3. Dezavantajele utilizării tranzitorii pe site-ul dvs. WordPress
4. Când să folosiți WordPress Transients
5. Gestionarea tranzitorii WordPress
6. Operații de bază utilizate în tranzitorii
6.1. 1. Setarea tranzitorii
6.2. 2. Recuperarea tranzitorii
6.3. 3. Ștergerea tranzitorii
7. Expirare tranzitorie: Cum funcționează?
8. Înțelegerea API-ului WordPress Tranzitori
8.1. Cele mai comune două implementări ale backend-ului API Tranzitori:
9. Aplicarea tranzitorii în dezvoltarea ta
10. Faceți mai mult cu site-ul dvs. WordPress

Ce sunt tranzitorii WordPress?

Pentru a înțelege tranzitorii, este util să aveți cunoștințe de bază despre stocarea în cache și interfețele de programare a aplicațiilor (API).

Memorarea în cache a datelor paginilor web este în esență o modalitate de a salva temporar datele unui site web, astfel încât, dacă există mai multe solicitări pentru aceleași date, site-ul nu trebuie să ruleze din nou MySQL sau PHP. Acest lucru poate economisi secunde de timp și poate reduce încărcarea serverului.

Ideea este de a păstra datele temporar, de unde și cuvântul „tranzitori”. API-ul Tranzitori este similar cu API-ul Opțiuni WordPress. Dați datelor un nume și o valoare - care pot fi complexe, ca o matrice PHP pe mai multe niveluri - și stochează datele. Mai târziu, poate chiar la o altă solicitare, puteți prelua acele date folosind numele lor. Diferența este că datele din tabelul Opțiuni vor rămâne pentru totdeauna. Adică puteți stoca date, iar trei ani mai târziu, acestea vor fi în continuare acolo.

Fiecare tranzitoriu este alcătuit din trei părți:

  • $tranzitoriu. Acesta este șirul folosit pentru a vă identifica tranzitorii și pentru a-l apela. Se mai numește „cheia” sau „numele” tranzitorului.
  • $valoare. Acestea sunt informațiile care sunt preluate printr-un API. Valoarea unui tranzitoriu poate fi un obiect, o matrice, un număr sau un șir.
  • $ expirare. Acesta este cât timp rămâne un temporar în baza de date, înainte de a fi șters și trebuie să accesați din nou informațiile de care aveți nevoie prin API.

La suprafață, asta este tot ce există pentru tranzitorii WordPress. Cu toate acestea, pentru a le folosi corect, trebuie să știți mai multe.

Datele tranzitorii nu vor rămâne totuși. Acesta este ideea! Puteți solicita datele și puteți constata că lipsesc în unul din două moduri. În primul rând, atunci când stocați datele, specificați o dată de expirare. De exemplu, ați putea spune „pastrați acest lucru timp de trei ore”. Deci, dacă îl solicitați după patru ore, va lipsi.

A doua modalitate este că acele date sunt lăsate să dispară, în orice moment, din orice motiv. Sună ciudat, știu! Ce rost are să stochezi datele dacă nu te poți baza pe ele? Ideea este că stocarea este o solicitare pe care WordPress va încerca să o onoreze, dar din cauza acestei flexibilități, este posibil să se utilizeze diferite tipuri de implementări pentru stocarea tranzitorie, ceea ce înseamnă că este posibil să se utilizeze tehnologii diferite și avansate pentru a face tranzitorii extrem de eficiente. și să funcționeze corect chiar și într-un mediu cluster cu mai multe servere.

Din cauza acestui lucru „dispare în orice moment”, în general folosiți tranzitorii pentru un cache. Adică, dacă trebuie să calculați ceva care necesită timp real, cum ar fi o interogare MySQL lentă sau preluarea datelor dintr-o sursă externă, cum ar fi feedul Twitter sau RSS al cuiva, puteți stoca datele calculate într-o perioadă tranzitorie, știind că dacă acestea dispar. este întotdeauna posibil să-l recreați. Dar în cazul obișnuit - când NU lipsește - aveți datele rapid, fără a fi nevoie să le recalculați.

Beneficiile utilizării tranzitorii pe site-ul dvs. WordPress

După cum am menționat mai devreme, beneficiul principal al tranzitorii este că îmbunătățesc performanța site-ului. Iată o descriere generală a modului în care funcționează, folosind pluginul Google Site Kit ca exemplu.

Când pluginul este activat, folosește un API pentru a afișa date de pe platforme precum Analytics și Search Console în tabloul de bord WordPress. Fără tranzitorii, WordPress ar trebui să recupereze aceste informații din fiecare instrument de fiecare dată când ați vizualiza tabloul de bord Site Kit:

În schimb, Site Kit include elemente tranzitorii care memorează în cache datele din Analytics și Search Console. Acestea sunt stocate pentru o zi (sau o oră dacă platforma nu returnează date).

De fiecare dată când accesați tabloul de bord Site Kit, WordPress poate prelua rapid informațiile stocate din baza de date, în loc să fie nevoit să apeleze din nou API-ul. Când expiră perioada de expirare, datele vechi sunt șterse.

Aceasta înseamnă că nu trebuie să așteptați ca rezultatele să se încarce de fiecare dată. Acest lucru este util într-o varietate de situații, cum ar fi afișarea numărului de distribuiri pe rețelele sociale pentru postările dvs. sau afișarea unui flux de știri.

Dezavantajele utilizării elementelor tranzitorii pe site-ul dvs. WordPress

Ceea ce vă pune în probleme cu Tranzitorii sunt comportamentele diferite și greu de reprodus pe care le obțineți atunci când pluginul/tema dvs. rulează sub diferite implementări de tranzitori. Implementările tranzitorii diferite înseamnă că veți întâmpina probleme NUMAI în anumite configurații cu anumite tipuri de site-uri și niciodată în altele. În calitate de dezvoltator, dacă nu sunteți conștient de această capcană și nu codificați în consecință, veți crede că codul dvs. este bun, dar de fapt se va sparge în teren și nici nu veți ști cum să-l reproduceți !

Când să utilizați WordPress Tranzitori

Elementele tranzitorii sunt șterse din baza de date odată ce ajung la sfârșitul perioadei de expirare. Din acest motiv, doriți să le utilizați doar pentru informații care sunt recreate continuu.

În plus, deși pot îmbunătăți performanța proiectului dvs., tranzitorii sunt cel mai bine rezervați pentru interogări mari și apeluri de la distanță. Dacă va necesita mai mult cod pentru a crea un tranzitoriu decât pentru a face pur și simplu o nouă solicitare pentru resursă de fiecare dată când este nevoie, este mai bine să renunțați.

Gestionarea tranzitorii WordPress

Dacă doriți să vedeți și să gestionați cu ușurință tranzitorii care lucrează în prezent pe site-ul dvs. WordPress, puteți instala pluginul Tranzitori Manager:

Acesta oferă o listă completă de tranzitorii, pe care o puteți găsi navigând la Instrumente > Tranzitorii :

Aici puteți vedea toate cele trei elemente tranzitorii pe care le-am enumerat mai devreme - cheia (numele), valoarea și perioada de expirare. Puteți edita oricare dintre aceste caracteristici făcând clic pe linkul Editare :

De asemenea, puteți șterge tranzitorii individual sau în bloc.

Operații de bază utilizate în tranzitorii

Când vine vorba de codificarea propriilor tranzitorii, există trei operațiuni de bază pe care probabil va trebui să le utilizați. Am subliniat fiecare dintre ele mai jos, continuând să folosim Site Kit ca exemplu.

1. Setarea tranzitorii

Crearea sau „setarea” tranzitorii este procesul de definire a cheii, valorii și perioadei de expirare și de aplicare a acestor informații la datele relevante. Pentru a face acest lucru, veți folosi următorul format:

 Set_transient ('key', $value, expiration_period)

Iată codul folosit în Google Site Kit pentru a seta tranzitorii care stochează datele de analiză:

 // Cache "data found" status for one day, "no data" status for one hour. set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS ); } return (bool) $has_data; } }

Cheia tranzitorie este googlesitekit_analytics_has_data (definită mai devreme în cod), valoarea este $has_data sau $has_data ? , iar perioada de expirare este de o zi sau de o oră (în funcție de valoare).

2. Recuperarea tranzitorii

Recuperarea tranzitorii este puțin mai complicată. În primul rând, trebuie să utilizați o funcție pentru a solicita datele necesare. Apoi veți verifica pentru a vedea dacă are un tranzitoriu corespunzător care ar trebui să fie încărcat, în loc să faceți o nouă solicitare API.

Rezultatul ar putea arăta cam așa:

 function some_function(){ $transient = get_transient('key');

Apoi, va trebui fie să returnați tranzitorii, fie să ștergeți datele expirate și să efectuați un nou apel la sursă. În cele din urmă, trebuie să setați tranzitoriul după ce ați returnat noile date, astfel încât acestea să fie stocate din nou până la expirarea perioadei de expirare.

În Google Site Kit, acesta arată astfel:

 /** * Checks whether Analytics data exists for the given URL. * * @since 1.4.0 * * @param string $url The url to check data for. * @return bool */ protected function has_data_for_url( $url ) { if ( ! $url ) { return false; } $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url ); $has_data = get_transient( $transient_key ); if ( false === $has_data ) { /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */ $reports = $this->get_data( 'report', array( 'url' => $url, 'metrics' => array( array( 'expression' => 'ga:users' ), array( 'expression' => 'ga:sessions' ), ), ) ); if ( is_wp_error( $reports ) ) { $reports = array(); // Bypass data check and cache. } foreach ( $reports as $report ) { /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */ $report_data = $report->getData(); /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */ foreach ( $report_data->getTotals() as $date_range_values ) { /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */ if ( isset( $date_range_values[0], $date_range_values[1] ) && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] ) ) { $has_data = true; break 2; } } }

Acest cod ar trebui apoi să fie urmat de fragmentul pe care l-am inclus în secțiunea anterioară pentru setarea tranzitorilor.

3. Ștergerea tranzitorii

În unele cazuri, este posibil să descoperiți că doriți să eliminați un tranzitoriu. De exemplu, dacă doriți să vedeți întotdeauna cele mai actualizate analize în Google Site Kit, ar fi mai bine să nu stocați în cache datele (deși nu vă recomandăm să ștergeți efectiv elementele tranzitorii ale Site Kit-ului).

În caz contrar, pluginul va afișa aceleași rezultate pe tot parcursul zilei, chiar dacă ați avut noi vizitatori. Deoarece tranzitorii durează 24 de ore, datele pe care le vizualizați după-amiaza vor fi pur și simplu o versiune în cache a datelor pe care le-ați încărcat dimineața.

Cel mai simplu mod de a șterge tranzitorii este folosirea pluginului Tranzitori Manager. Cu toate acestea, dacă doriți să utilizați cod, puteți utiliza funcția delete_transient() . Tot ce aveți nevoie este cheia tranzitorie:

 delete_transient('key');

Cu toate acestea, va trebui să repetați acest lucru pentru fiecare tranzitoriu pe care doriți să îl ștergeți.

Expirare tranzitorie: Cum funcționează?

Perioadele de expirare tranzitorii pot fi exprimate în câteva moduri diferite. Cele mai simple două opțiuni sunt:

  • În secunde ( set_transient('key', $value, 86400))
  • Utilizarea constantelor de timp WordPress ( set_transient('key', $value, DAY_IN_SECONDS))

Alternativ, puteți seta și tranzitorii care nu expiră niciodată. Acest lucru poate fi util în situațiile în care doriți să păstrați aceleași date tranzitorii, până când ștergeți și resetați manual informațiile din cache.

Crearea de tranzitorii care nu expiră este destul de simplă. Pur și simplu lăsați necompletat parametrul de expirare din funcția set_transient sau identificați-l ca zero.

Înțelegerea API-ului WordPress Transients

API-ul WordPress Tranzitori este pur și simplu mijlocul prin care informațiile sunt stocate în cache în baza de date a site-ului dvs. Acesta permite toate operațiunile conexe despre care am discutat în această postare, inclusiv setarea, obținerea și ștergerea tranzitorii.

Cu alte cuvinte, API-ul Tranzitori este doar partea de bază a WordPress care vă permite să utilizați tranzitorii.

Cele mai comune două implementări ale backend-ului API Tranzitori:

  1. Cel încorporat în WordPress și, prin urmare, cel mai comun de departe. Valorile tranzitorii sunt stocate în tabelul wp_options la fel ca și opțiunile obișnuite. În cazul tranzitorii, o opțiune suplimentară este stocată pentru a păstra data de expirare. Când este accesat un tranzitoriu, WordPress trage mai întâi data de expirare. Dacă a expirat, WordPress șterge ambele opțiuni din tabel, „curățând” astfel datele și pretinde că datele nu au fost niciodată acolo. Dacă nu este expirat, preia conținutul din tabelul de opțiuni.
  2. Memcached. Memcached este un software foarte simplu, dar eficient și de încredere, pe partea de server, conceput să facă exact ceea ce ar trebui să facă API-ul Tranzitori - să stocheze date pe baza unei chei, care expiră la un moment dat și care poate dispărea în orice moment dacă este nevoie. la.

Utilizarea memcached în loc de WordPress Transients are două beneficii speciale, motiv pentru care îl preconfiguram automat pentru tine aici la WP Engine. Vă oferim spatele

i. Memcached este de 10x-100x mai rapid la stocarea și preluarea valorilor decât WordPress Transients, ceea ce este deosebit de interesant, deoarece scopul tranzitorilor este de a stoca în cache datele pentru a crește viteza unui site.

ii. Memcached setează cantitatea maximă de spațiu pe care o va ocupa cu datele (de exemplu, 64 MB de RAM), ceea ce înseamnă că, dacă un site stochează prea multe date simultan, va arunca automat datele vechi și, prin urmare, nu va rămâne niciodată fără spațiu. Dar WordPress Transients încorporat va stoca o cantitate arbitrară de date în tabelul de opțiuni.

Aplicarea tranzitorii în dezvoltarea ta

Să presupunem că citiți și scrieți aceeași cheie Tranzitori în mod repetat și să presupunem că este 1k de date. În acest caz, atât Memcached, cât și WordPress Transients vor face exact ceea ce vă așteptați, și ambele vor ocupa aproximativ 1k de spațiu (fie în tabelul de opțiuni, fie în memcached).

Acum să presupunem că citiți și scrieți diferite chei Tranzitorii, diferite pentru fiecare sesiune de browser. Pe scurt, ce se întâmplă dacă stocați date despre sesiunea utilizatorului în Transients? Acest lucru are sens la suprafață. Datele sesiunii nu ar trebui să dureze pentru totdeauna și nu doriți să vă deranjați cu tabele speciale ale bazei de date. În plus, multe companii de găzduire WordPress nu permit sesiuni PHP, așa că acesta este într-adevăr cel mai bun lucru. Este chiar rapid și multi-server.

Aici apar diferențele. Cu Memcached și cu un site cu trafic redus, această metodă pare să funcționeze. Valorile durează un timp, apoi sunt șterse pe măsură ce expiră. Cu toate acestea, dacă serverul este încărcat puternic, cantitatea de date de sesiune pe care serverul trebuie să le stocheze va depăși spațiul disponibil în memcached și, prin urmare, veți începe să pierdeți datele de sesiune mai devreme decât credeați. Și dacă nu ai testa în acest mediu exact, foarte încărcat, nu ai ști niciodată asta. În general, aceste medii ajung să umple memcache-ul atât de repede încât memcache-ul efectiv este dezactivat, deoarece nu poate păstra niciodată datele suficient de mult pentru a fi util. De fapt, nu aveți deloc un cache API Tranzitoriu!

Dar cu WordPress Transients, obțineți un comportament diferit, dar încă foarte nedorit. Deoarece valorile sunt scrise în baza de date, nu într-un bloc de RAM de dimensiune fixă, toate rămân. Ceea ce înseamnă că, chiar și cu site-ul foarte încărcat, încă aveți datele sesiunii. Minunat!

Sau așa credeai. Pentru că ceea ce nu se spune în API-ul Tranzitoriu este ceea ce se întâmplă atunci când utilizați chei unice, cum ar fi sesiunile. Și ceea ce se întâmplă cu metoda încorporată este că tabelul cu opțiuni se umple la infinit! Deoarece: „Curățirea datelor vechi” de la WordPress funcționează numai atunci când solicitați cheia (cum am descris mai devreme). Dacă doar lăsați cheia, aceasta rămâne în tabelul cu opțiuni, pentru totdeauna. Nu există un proces separat care să le curețe!

Nu doar că suntem conștienți de această problemă, ci vrem să ajutăm clienții noștri care ar putea rula cod care nu înțeleg acest lucru. Aici intervine „gestionat” din WordPress gestionat! În fiecare seară, avem un proces automat pentru a căuta prin tabelul dvs. de opțiuni temporare expirate și pentru a le șterge (atât datele, cât și data de expirare). Bum! Au dispărut și nu trebuie să-ți faci griji pentru ei.

Deci, este minunat că facem asta, dar în calitate de dezvoltator al unui plugin general sau al unei teme care ar trebui să funcționeze corect în orice mediu de găzduire, nu puteți face acest lucru în toate mediile potențiale pe care pluginul sau tema dvs. ar putea fi implementate și dvs. doriți să vă asigurați că oferiți utilizatorilor și clienților dvs. cel mai optimizat cod posibil.

Cu toate acestea, acum că știți cum pot merge stricați Tranzitorii, ar putea fi o idee minunată să aruncați o privire și să vedeți cum puteți face codul mai eficient. Sunt șanse, dacă ați citit până aici, să vă place să vă optimizați codul, iar această postare de blog vă poate arunca mănușa și să vă motiveze să rescrieți unele lucruri pentru a fi mai scalabil!

Faceți mai mult cu site-ul dvs. WordPress

În calitate de dezvoltator WordPress, este esențial să oferi utilizatorilor finali acces la date de la distanță, menținând în același timp performanța rapidă. Tranzitorii WordPress vă pot ajuta să realizați exact asta.

Cu toate acestea, nu strica să obțineți puțin ajutor suplimentar de la găzduirea WordPress rapidă și de la resursele dezvoltatorilor profesioniști. Indiferent dacă sunteți începător în codificare sau un profesionist experimentat, suntem gata să vă ajutăm. Consultați planurile noastre astăzi!