Skip to:
Content

bbPress.org


Ignore:
Timestamp:
06/19/2017 05:05:18 AM (9 years ago)
Author:
johnjamesjacoby
Message:

Cache: make bbp_clean_post_cache() an action-only function.

Instead of calling bbp_clean_post_cache() directly, we'll call clean_post_cache() as per normal and hook bbp_clean_post_cache() to the end of it. This reduces a bunch of superfluous cache invalidation from occurring back-to-back.

We'll also only ever update the last_changed cache key when we've reached the forum-root. This makes sure that subsequent recursive calls up the post_parent tree are dealing with the same last_changed value until the end.

This change will reduce the number of cache invalidation calls by a large amount, improving functional performance for database writes to the post & postmeta tables.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/core/cache.php

    r6583 r6585  
    136136function bbp_clean_post_cache( $post_id = null, $post = null ) {
    137137
    138     // Get the post object.
    139     if ( null !== $post ) {
    140         $post = get_post( $post );
    141     } else {
    142         $post = get_post( $post_id );
    143     }
    144 
    145     // Bail if no post
    146     if ( empty( $post ) ) {
    147         return;
    148     }
    149 
    150138    // Child query types to clean
    151139    $post_types = array(
     
    159147        return;
    160148    }
    161 
    162     // Be sure we haven't recached the post data
    163     wp_cache_delete( $post->ID, 'posts'     );
    164     wp_cache_delete( $post->ID, 'post_meta' );
    165 
    166     // Clean the term cache for the given post
    167     clean_object_term_cache( $post->ID, $post->post_type );
    168 
    169     // Bump the last_changed cache
    170     wp_cache_set( 'last_changed', microtime(), 'bbpress_posts' );
    171149
    172150    /**
     
    182160    // Invalidate parent caches
    183161    if ( ! empty( $post->post_parent ) ) {
    184         bbp_clean_post_cache( $post->post_parent );
     162        clean_post_cache( $post->post_parent );
     163
     164    // Only bump `last_changed` when forum-root is reached
     165    } else {
     166        wp_cache_set( 'last_changed', microtime(), 'bbpress_posts' );
    185167    }
    186168}
Note: See TracChangeset for help on using the changeset viewer.