Opened 4 months ago

Last modified 5 weeks ago

#23173 new task (blessed)

Don't cache arrays of query results in a single cache bucket

Reported by: ryan Owned by:
Priority: normal Milestone: Future Release
Component: Cache Version: 3.5
Severity: normal Keywords:
Cc: aaroncampbell, ADAMSILVERSTEIN@…, scribu

Description

We have started using one cache bucket per query with passive invalidation controlled through a last_changed incrementor. See #22024 for an example. We also need to do this with get_pages(), wp_get_archives(), and elsewhere. On wordpress.com we have hacked some of these into separate buckets because saving multiple queries per cache bucket results in huge buckets. We have seen 72MB get_pages caches. Let's finally clean this up for good. Some of the last_changed work done for #22176 can be used here.

Change History (15)

See #23167 for get_pages(). This ticket can be a tracking ticket for all such changes.

  • Cc aaroncampbell added
  • Milestone changed from Future Release to 3.6
  • Type changed from defect (bug) to task (blessed)
  • Cc ADAMSILVERSTEIN@… added

#23206 for wp_get_archives()

  • Cc scribu added

Looking at [23300], are we going to do function_exists( 'wp_cache_incr' ) or can we mandate that all the object cache backends implement it?

Version 0, edited 4 months ago by scribu (next)

Maybe wrap that logic in wp_bump_last_changed( 'post' )? Although if plugins like W3 Total Cache updated for 3.4 we might be able to drop the checks.

#23326 for get_terms()

#23327 for get_bookmarks()

get_calendar() also looks like a good one to update. It can invalidate with the posts last_changed.

If we introduce wp_cache_get_multi(), perhaps we should consider finally splitting alloptions and notoptions into individual cache buckets.

In 23384:

Use incrementors for cache invalidation in get_terms().

fixes #23326
see #23173

In 23385:

In wp_get_archives(), cache queries to individual cache buckets instead of storing them in one cached array. Use incrementor style passive cache invalidation.

fixes #23206
see #23173

  • Milestone changed from 3.6 to Future Release
Note: See TracTickets for help on using tickets.