Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
09/27/2017 10:24:10 AM (7 years ago)
Author:
johnjamesjacoby
Message:

Members: trust WP_User::get_data_by() and eliminate an additional user cache layer.

This change removes ye olde bp_core_userdata_ cache key system, relying 100% on the baked-in object cache for user data and improving the liklihood of cache hits (particularly when other membership or community plugins are looking for user data outside of a BuddyPress specific context.)

For example, bbPress will look for authors of topics and latest posts on various forum pages, but BuddyPress will want to make sure it's XProfile Field display names are used. Previous to now, BuddyPress would need to re-query for these users and keep a separate cache of them. By relying on the traditional user objects, those duplicate database queries never happen, resulting in much joy.

This additionally improves page performance throughout the entire application. When user accounts are updated (via XProfile or related) and then immediately prime their caches, there is no more secondary BuddyPress-specific user object cache to prime.

Fixes #7595.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/classes/class-bp-user-query.php

    r11376 r11705  
    571571        ), $this ) );
    572572
    573         // WP_User_Query doesn't cache the data it pulls from wp_users,
    574         // and it does not give us a way to save queries by fetching
    575         // only uncached users. However, BP does cache this data, so
    576         // we set it here.
    577         foreach ( $wp_user_query->results as $u ) {
    578             wp_cache_set( 'bp_core_userdata_' . $u->ID, $u, 'bp' );
    579         }
    580 
    581573        // We calculate total_users using a standalone query, except
    582574        // when a whitelist of user_ids is passed to the constructor.
Note: See TracChangeset for help on using the changeset viewer.