[buddypress-trac] [BuddyPress Trac] #7435: XProfile caching: The Next Generation
buddypress-trac
noreply at wordpress.org
Fri Aug 31 22:08:22 UTC 2018
#7435: XProfile caching: The Next Generation
------------------------------+---------------------
Reporter: boonebgorges | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone: 4.0
Component: Extended Profile | Version:
Severity: normal | Resolution:
Keywords: |
------------------------------+---------------------
Changes (by boonebgorges):
* milestone: Awaiting Contributions => 4.0
Comment:
I've started work on this and would like to squeeze at least part of it
into 4.0, if possible.
[attachment:"7435.diff"] breaks up `BP_XProfile_Group::get()` somewhat, so
that the group ID query and the field ID queries take place in different
methods: `get_group_ids()` and `get_group_field_ids()`. They're meant for
internal use, and are public only so that it's easier to test them. Each
of them has its own caching layer, both of which are tied to the
`bp_xprofile_groups` incrementor. I'm using the same incrementor for each,
because any changes to *either* groups or fields can result in the queries
being thrown off (because of `hide_empty_groups` etc). I'm then using the
SQL statement to generate a cache key.
I've made an attempt to cover the invalidation cases. I've erred on the
side of too-much-invalidation: we bust the incrementor anytime a group or
a field is saved or deleted. Updating field/group order also needs its own
invalidation, because it doesn't run through `save()`.
This thought process - especially invalidation - could use another set of
eyes. Maybe @dcavins ? I can work on more caching, but what's suggested
here would be a good start.
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/7435#comment:4>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list