Werken met veranderende, cacheerbare gegevens? WP-Transiënten heeft uw rug!

Het wijzigen van gegevens is altijd aanwezig op een WordPress-site. Of het nu een nieuw bericht, een toegevoegde opmerking of een bijgewerkte tweet voor de voorpagina is, de status van een blog wordt voortdurend gewijzigd. Aangezien dergelijke gegevens vaak nuttig zijn voor een bezoeker, moet deze worden weergegeven. Dit wordt echter geplaagd door het feit dat dynamische informatie, vooral uit externe bronnen, resulteert in tragere, belastende sites. Als het op deze problemen aankomt, heeft de WordPress Transient API u gedekt door zijn robuuste caching. De volgende screencast laat precies zien hoe u van de functies ervan kunt profiteren.


screencast


Stap 1 Haal de transiënt op naam

Toegang tot een voorbijganger door een naam door te geven aan de get_transient () functie. Maak je geen zorgen; ook al heb je er nog geen gemaakt, dit is nog steeds de eerste stap! Voor ons voorbeeld krijgen we een Twitter-volgertelling.

 $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient);

Stap 2 Controleer of de Transient is verlopen

Als de geretourneerde waarde van get_transient () is onwaar, de transiënt is ofwel verlopen (gebaseerd op de tijdparameter die in stap 3 is uitgelegd) of is nooit ingesteld in de eerste plaats:

 if (false === $ count) // transient is verlopen; ga verder met stap 3

Stap 3 Stel de overgang in als dit is verlopen

Wanneer een voorbijgaande periode verloopt, moet deze worden gereset; met andere woorden, de gegevens moeten worden vernieuwd. Om dit te bereiken, moet u eerst de nieuwe gegevens ophalen. Haal in dit geval het aantal volgers op via de Twitter API volgens de video:

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

Sla het nu op met behulp van de set_transient () functie. Merk op dat dit een naam, waarde en verlooptijd in seconden als parameters vereist. Nadat deze tijd is verstreken, get_transient () retourneert false en activeert deze stap opnieuw:

 // verloopt over 1 dag (60 seconden / minuut * 60 minuten / uur * 24 uur / dag = seconden / dag) set_transient ($ transient, $ count, 24 * 60 * 60);

Stap 4 Zet alles samen

De combinatie hiervan in één functie levert op:

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

Het aantal volgers is niet alleen overal beschikbaar voor gebruik op uw site, maar het wordt ook elke dag efficiënt opgeslagen om laadtijden te beteugelen.


Laatste code van de video

De uiteindelijke code van de screencast - met een paar wijzigingen - is hieronder opgenomen:

 class WPTuts_Transients public function WPTuts_Transients ()  public function twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  public function 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; if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; return $ count;  public function twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  public function 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; if ($ json) $ tweets = $ json; $ tweets retourneren;  public function feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  public function refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; if (preg_match ('~ circulation = "(\ d +)" ~', $ data, $ matches) && isset ($ matches [1])) $ count = (int) $ matches [1]; return $ count;  persoonlijke functie process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ transient); if (false === $ data) if (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ transient, $ data, $ time);  retourneer $ gegevens; 

Bedankt

Ik hoop dat dit een nuttige tutorial is geweest voor de WordPress Transient API. Laat gerust je reacties achter.