Arbeider med å endre, cacheable data? WP-transienter har fått din tilbake!

Endring av data er alltid til stede i et WordPress-drevet nettsted. Det være seg et nytt innlegg, en lagt kommentar eller en oppdatert tweet på forsiden, statusen til en blogg blir stadig endret. Siden slike data ofte er nyttige for en besøkende, kommer det et behov for å vise det. Dette er imidlertid plaget av det faktum at dynamisk informasjon - spesielt fra eksterne kilder - resulterer i tregere, belastede steder. Når det gjelder disse problemene, har WordPress Transient API dekket med sin robuste caching. Følgende screencast viser nøyaktig hvordan du kan dra nytte av funksjonene.


screen~~POS=TRUNC


Trinn 1 Få transienten ved navn

Få tilgang til en forbigående ved å sende et navn til get_transient () funksjon. Ikke bekymre deg; selv om du ikke har opprettet en enda, er dette fortsatt det første skrittet! For eksempel får vi en Twitter-teller.

 $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ forbigående);

Trinn 2 Sjekk om transienten er utløpt

Hvis returverdi av get_transient () er falsk, transienten har enten gått ut (basert på tidsparameteren forklart i trinn 3) eller ble aldri satt i utgangspunktet:

 hvis (false === $ count) // transient er utløpt; fortsett til trinn 3

Trinn 3 Hvis utløpt, Angi transienten

Når en forbigående utløper, må den nullstilles. med andre ord, dataene må oppdateres. For å oppnå dette, må du først hente de nye dataene. I dette tilfellet få følgere å telle via Twitter API som i videoen:

 $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); hvis ($ json && isset ($ json [0]) og& isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count;

Lagre det nå ved å bruke set_transient () funksjon. Merk at dette krever et navn, verdi og utløpstid i sekunder som parametere. Etter denne tiden er gått, get_transient () vil returnere falsk og utløse dette trinnet igjen:

 // utløper om 1 dag (60 sekunder / minutt * 60 minutter / time * 24 timer / dag = sekunder / dag) set_transient ($ forbigående, $ telling, 24 * 60 * 60);

Trinn 4 Sett alt sammen

Kombinere dette til en funksjon gir:

 funksjon twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ forbigående); hvis (false === $ count) $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); hvis ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; set_transient ($ forbigående, $ telling, 24 * 60 * 60);  returnere $ count; 

Follower counten er ikke bare tilgjengelig for bruk hvor som helst på nettstedet ditt, men det er også effektivt cached hver dag for å dempe belastetider.


Endelig kode fra videoen

Den endelige koden fra screencast-med noen få modifikasjoner-er inkludert nedenfor:

 klasse WPTuts_Transients offentlig funksjon WPTuts_Transients ()  offentlig funksjon twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  offentlig funksjon refresh_twitter_follower_count () $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); $ count = false; hvis ($ json && isset ($ json [0]) og& isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; returner $ count;  offentlig funksjon twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  offentlig funksjon refresh_twitter_recent_tweets () $ data = @file_get_contents ("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=envatowp&count=5&trim_user=true&exclude_replies=true"); $ json = json_decode ($ data); $ tweets = false; hvis ($ json) $ tweets = $ json; returnere $ tweets;  offentlig funksjon feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ dette, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  offentlig funksjon refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; hvis (preg_match ('~ circulation = "(\ d +)" ~, $ data, $ matches) && isset ($ matches [1])) $ count = (int) $ matches [1]; returner $ count;  privatfunksjon process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ forbigående); hvis (false === $ data) if (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ forbigående, $ data, $ tid);  returnere $ data; 

Takk

Jeg håper at dette har vært nyttig opplæring i WordPress Transient API. Vær så snill å legge igjen dine kommentarer nedenfor.