Memberside Optimizer
The member directory is the screen most likely to slow down as a community grows. Optimizer is the fix for that specific problem.
The problem it solves
Section titled “The problem it solves”Membership plugins store profile fields as user meta. A directory that filters and sorts across several of those fields becomes a query with a join per field, and that query gets slower with every member you add.
At a few hundred members nobody notices. At tens of thousands, the directory is the slowest screen in the app, and it is usually one of the first screens a member opens.
What it does
Section titled “What it does”Optimizer maintains a wide lookup table: one row per member, one column per searchable field. The directory reads from that table instead of assembling the same answer from user meta on every request.
Keeping it current
Section titled “Keeping it current”Switch on Keep the table in sync and Optimizer watches for changes as they happen — a profile saved, a member approved, a photo uploaded, an account deleted — and refreshes just the affected row shortly afterwards. You do not have to rebuild to see an edit.
Leave it off and the table is a snapshot: accurate as of the last rebuild, and out of date from the next profile save until the next one.
Sync is deliberately a switch rather than always-on, because it adds a small amount of work to every profile change. On a site that rebuilds nightly and whose directory does not need to be up to the minute, the snapshot is fine.
The Services screen shows how far behind the table is — how many members are waiting to be refreshed, and how long the oldest has been waiting. On a healthy site that number sits at zero most of the time and spikes briefly after a bulk edit or an import.
What it speeds up
Section titled “What it speeds up”Four screens, each switched on separately under Memberside → Services, and each safe to leave off:
| Screen | What was slow |
|---|---|
| Your Ultimate Member directory | A join against user meta per searchable field |
| Your BuddyPress members directory | Sorting by “recently active” scans the whole activity stream; “alphabetical” sorts a text column that cannot be indexed |
| The app’s member directory | The same per-field joins, on the screen members scroll most |
| The members map | Every pan compares coordinates stored as text, which no index can help, twice |
They are separate switches because they are separate translations. Evidence that one is correct on your site says nothing about the others, so each has its own Shadow mode: both engines run, your members still see the original result, and the panel reports whether the two agreed.
BuddyBoss Platform works the same way — it is the same community software under a different name — though it has had less testing than BuddyPress.
When you need it
Section titled “When you need it”Look at Site Health, specifically the endpoint breakdown.
Optimizer is the answer when the Directory group is slow and the others are not.
Optimizer is not the answer when everything is slow — that is the site or the host, and speeding up one query will not be felt.
Setting it up
Section titled “Setting it up”Optimizer is part of the Memberside plugin on your own site rather than a service your app connects to. Configure it under Memberside → Services.
The first build of the lookup table runs in the background over your existing members and takes a while on a large site. The directory keeps working from user meta while it runs, so there is no downtime — it gets faster when the table is ready rather than switching over abruptly.
Media mirroring
Section titled “Media mirroring”Optimizer also mirrors local WordPress avatars to a CDN, leaving Gravatar alone for the reason given under Media CDN: a Gravatar URL is already served from a CDN.
When it does not work
Section titled “When it does not work”| Symptom | Cause | Fix |
|---|---|---|
| The directory is no faster | The lookup table is still building | Give it time on a large site |
| Everything is still slow | The bottleneck is the site, not the directory query | Look at hosting and heavy plugins |
| A member’s profile change is not reflected | Sync is switched off, so the table is a snapshot | Switch on Keep the table in sync, or rebuild |
| Members are queued and the number never falls | Nothing is draining the queue — the site has no background task runner | Install a scheduler, or drain by hand from Memberside → Services |
| A few members are marked as failing | Their data cannot be read into a column | Look at the reason shown beside the count; retry once the field is fixed |
| A field cannot be filtered on | It is not in the lookup table | Check the field is configured under Memberside → Services |
| A screen is switched on but no faster | Its requests are falling back | Shadow mode lists why. Random ordering, and searches across every profile field, always fall back |
| Everything switched itself off after a change | Your fields or your plugins changed, so the table no longer matches | Rebuild |