Opened 13 years ago
Closed 13 years ago
#3799 closed enhancement (fixed)
Grab and cache groupmeta when viewinga group page
Reported by: | boonebgorges | Owned by: | |
---|---|---|---|
Milestone: | 1.6 | Priority: | normal |
Severity: | major | Version: | |
Component: | Groups | Keywords: | dev-feedback |
Cc: |
Description
Lots of plugins use groupmeta. If you use 5 different pieces of groupmeta in a group, it adds 5 queries to each page load. We should be a bit more generous about this in BP core.
I propose that we do two things:
- Refactor BP_Groups_Group::populate(). Remove the join against groupmeta in the initial query. Instead, do a single query for all groupmeta associated with that group. Then, we can stash the results in the $bp->groups->current_group object (kinda like WP does with the current_user object), or in the WP cache (like WP does with postmeta), or both.
- Add a sweep of groupmeta to BP_Groups_Group::get(), so that the groupmeta for all the returned groups is either put into the WP cache or passed back with the resulting object. Because this could potentially be a large amount of data (especially if people are calling up large number of groups in utility functions), we should probably have a way to disable this with an optional parameter.
We can look to WP's nice update_meta_cache() for guidance on how to do this. We can probably do the same thing for both of my suggestions.
I'm happy to whip up a patch, but would be happy to get some feedback first. This is pretty painless, so could pretty easily go into BP 1.6 if I get a patch up in the next week or so. Otherwise it's puntable.
Attachments (1)
Change History (5)
#2
@
13 years ago
This patch is not complete. For educational purposes only! Just to give you an idea.
#3
@
13 years ago
I'm about to commit a working version of this. Going to mark this ticket as resolved and open a separate ticket for the activity stuff. If issues arise with the group version, feel free to reopen this ticket.
#4
@
13 years ago
- Resolution set to fixed
- Status changed from new to closed
(In [5460]) Introduces automatic meta cache features.
Introduces bp_update_meta_cache(), for collecting all metadata associated with an object or with multiple objects in one fell swoop, and adding it to the WP cache for quicker access later
Introduces bp_groups_update_meta_cache(), for collecting groupmeta at the beginning of a group loop
Modifies the BP_Groups_Group object so that groupmeta is fetched in the populate() and get() methods
Fixes #3799
Gigantic +1!
Should probably do this for the activity component as well.