function zt_display_leaders() { $leaders = get_transient( 'zt-leaders' ); if ( false === $leaders ) { $leaders = zt_get_leaders(); set_transient( 'zt-leaders', $leaders, 300 ); } return $leaders; }
function zt_display_leaders() { $leaders = wp_cache_get( 'zt-leaders', 'zt-stats' ); if ( false === $leaders ) { $leaders = zt_get_leaders(); wp_cache_set( 'zt-leaders', $leaders, 'zt-stats', 300 ); } return $leaders; }
Cache when the data is not cached
// functions.php function zt_get_tweet() { if ( false === ( $tweet = get_transient( 'zt-tweet' ) ) ) { $tweet = zt_request_tweet(); // Talk to Twitter set_transient( 'zt-tweet', $tweet, 300 ); } return $tweet; } // sidebar.php <h3>Latest Tweet:</h3> <p><?php echo zt_get_tweet(); ?></p>
function zt_set_best_games( $post_id, $post ) { if ( 'zt-game' != $post->post_type ) return false; zt_determine_best_games(); } add_action( 'publish_post', 'zt_set_best_games', 99, 2 ); function zt_determine_best_games() { /* Get best reviewed games; set to $top_games */ set_transient( 'zt-top-games', $top_games ); return $top_games; }
In 2 years
1 post per day: 730 runs
Common solution: 210,240 runs
function zt_schedule_tweet_retrieval() { if ( ! wp_next_scheduled( 'zt_tweet_sched' ) ) wp_schedule_event( time(), 'hourly', 'zt_tweet_sched' ); add_action( 'zt_tweet_sched', 'zt_request_tweet' ); } add_action( 'init', 'zt_schedule_tweet_retrieval' ); function zt_request_tweet() { // Talk to Twitter set_transient( 'zt-tweet', $tweet ); return $tweet; } function zt_get_tweet() { if ( false === ( $tweet = get_transient( 'zt-tweet' ) ) ) { $tweet = zt_request_tweet(); // Talk to Twitter set_transient( 'zt-tweet', $tweet ); } return $tweet; }
Placeholder text
function zt_display_tweet() { if ( $tweet = get_transient( 'zt-tweet' ) ) { return $tweet; else return 'Latest Tweet Unavailable'; }
Regenerate data
function zt_display_tweet() { if ( $tweet = get_transient( 'zt-tweet' ) ) { return $tweet; else return zt_get_tweet(); // Talk to Twitter }
Storing a "backup"
function zt_schedule_tweet_retrieval() { if ( ! wp_next_scheduled( 'zt_tweet_sched' ) ) wp_schedule_event( time(), 'hourly', 'zt_tweet_sched' ); add_action( 'zt_tweet_sched', 'zt_generate_tweet' ); } add_action( 'init', 'zt_schedule_tweet_retrieval' ); function zt_generate_tweet() { $tweet = zt_request_tweet(); // Talk to Twitter set_transient( 'zt-tweet', $tweet ); if ( ! get_option( 'zt-tweet' ) ) add_option( 'zt-tweet', $tweet, '', 'no' ); else update_option( 'zt-tweet', $tweet ); return $tweet; }
Using the "backup"
function zt_display_tweet() { if ( $tweet = get_transient( 'zt-tweet' ) ) { return $tweet; } elseif ( $tweet = get_option( 'zt-tweet' ) { set_transient( 'zt-tweet', $tweet ); return $tweet; } else { return zt_generate_tweet(); } }
function zt_schedule_generate_beer() { if ( ! wp_next_scheduled( 'zt_beer_sched' ) ) wp_schedule_event( time(), 'daily', 'zt_beer_sched' ); add_action( 'zt_beer_sched', 'zt_generate_beer_list' ); } add_action( 'init', 'zt_schedule_generate_beer' ); function zt_generate_beer_list() { // Query API and generate HTML $beer_list = zt_get_beer_list(); set_transient( 'zt-beers', $beer_list ); delete_transient( 'zt-beer-sched-single' ); return $beer_list; } function zt_generate_beer_on_publish( $post_id, $post ) { zt_generate_beer_list(); } add_action( 'publish_post', 'zt_generate_beer_on_publish', 10, 2 );
// Same function from previous slide function zt_generate_beer_list() { // Query API and generate HTML $beer_list = zt_get_beer_list(); set_transient( 'zt-beers', $beer_list ); delete_transient( 'zt-beer-sched-single' ); return $beer_list; } function zt_display_all_the_beers() { if ( $beers = get_transient( 'zt-beers' ) ) { return $beers; } else { if ( ! get_transient( 'zt-beer-sched-single' ) ) { set_transient( 'zt-beer-sched-single', 'yes' ); wp_schedule_single_event( time(), 'zt_beer_sched' ); } return 'Beer list is being generated.'; } }
Andrew Nacin (@nacin)
Daniel Bachhuber (@danielbachhuber)
Helen Hou-Sandi (@helenhousandi)
Laura Milewski (@l
Steve Locker (@slocker3)