Make WordPress Core


Ignore:
Timestamp:
04/18/2023 11:48:46 AM (20 months ago)
Author:
spacedmonkey
Message:

Users: Cache database queries within WP_User_Query class.

Cache the results of database queries within WP_User_Query class. Only cache queries that are requesting 3 or less fields so that caches are not storing full user objects. Cache results are stored in a new global cache group named users-queries. Add a new parameter to WP_User_Query called cache_results to allow developers to opt out of a receiving cached results. cache_results parameter defaults to true. Also add a new helper function called wp_cache_set_users_last_changed, similar to wp_cache_set_posts_last_changed that incroments last changed value in cache group users. Ensure that wp_cache_set_users_last_changed is called whenever user / user meta is modified for proper cache invalidation.

Props johnjamesjacoby, spacedmonkey, westi, dd32, strategio, srikanthmeenakshi, OllieJones, khoipro, rjasdfiii, flixos90, mukesh27, peterwilsoncc.
Fixes #40613.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/user.php

    r55584 r55657  
    19081908
    19091909    wp_cache_delete( $user->ID, 'user_meta' );
     1910    wp_cache_set_users_last_changed();
    19101911
    19111912    /**
     
    50175018    );
    50185019}
     5020
     5021/**
     5022 * Sets the last changed time for the 'users' cache group.
     5023 *
     5024 * @since 6.3.0
     5025 */
     5026function wp_cache_set_users_last_changed() {
     5027    wp_cache_set( 'last_changed', microtime(), 'users' );
     5028}
Note: See TracChangeset for help on using the changeset viewer.