mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-07-01 07:40:07 +00:00
Query: Save excessive cache add and sets in WP_Query.
In [53941] database query caching was added to `WP_Query`. However on sites with persistent object caching enabled, this resulted in a high number of unnecessary cache set and adds being run on every request. Caches are not set, if the query cache already exists and is cached. Replace usage of `update_post_caches` with `_prime_post_caches` to ensure that only posts that are not in cache are primed. Props spacedmonkey, peterwilsoncc, mukesh27. See #22176. git-svn-id: https://develop.svn.wordpress.org/trunk@54352 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -3099,10 +3099,10 @@ class WP_Query {
|
||||
$last_changed .= wp_cache_get_last_changed( 'terms' );
|
||||
}
|
||||
|
||||
$cache_key = "wp_query:$key:$last_changed";
|
||||
|
||||
$cache_key = "wp_query:$key:$last_changed";
|
||||
$cache_found = false;
|
||||
if ( null === $this->posts ) {
|
||||
$cached_results = wp_cache_get( $cache_key, 'posts' );
|
||||
$cached_results = wp_cache_get( $cache_key, 'posts', false, $cache_found );
|
||||
|
||||
if ( $cached_results ) {
|
||||
if ( 'ids' === $q['fields'] ) {
|
||||
@@ -3256,7 +3256,7 @@ class WP_Query {
|
||||
$this->posts = array_map( 'get_post', $this->posts );
|
||||
}
|
||||
|
||||
if ( $q['cache_results'] && $id_query_is_cacheable ) {
|
||||
if ( $q['cache_results'] && $id_query_is_cacheable && ! $cache_found ) {
|
||||
$post_ids = wp_list_pluck( $this->posts, 'ID' );
|
||||
|
||||
$cache_value = array(
|
||||
@@ -3455,7 +3455,8 @@ class WP_Query {
|
||||
$this->posts = array_map( 'get_post', $this->posts );
|
||||
|
||||
if ( $q['cache_results'] ) {
|
||||
update_post_caches( $this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
|
||||
$post_ids = wp_list_pluck( $this->posts, 'ID' );
|
||||
_prime_post_caches( $post_ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
|
||||
}
|
||||
|
||||
/** @var WP_Post */
|
||||
|
||||
Reference in New Issue
Block a user