BuddyPress Hosting

BuddyPress hosting where everyone sees a different page.

A social site has no shared front page. Every member's feed is assembled for them, which means the busiest pages on the site are the ones a cache can never help with.

Per-member feedsNotification fan-out absorbedActivity tables indexed
Feed generationNotification fan-outActivity indexingDaily backupsFree SSL24/7 support
Built for members

Nothing here is the same twice.

A social network's defining property, from a hosting point of view, is that no two visitors get the same page.

Feeds built per member, every time

An activity stream is filtered by who somebody follows, which group they are in and what they have muted. There is no version of that page to cache, so it has to be generated quickly instead.

No shared version

One post, hundreds of notifications

A message in a busy group fans out to every member of it. That write amplification is the load nobody predicts, and capacity is allocated for it rather than for the single post that triggered it.

Fan-out absorbed

Activity tables that keep up

The activity table is the busiest in the install — written on every action and read on every page. It is indexed for the queries a stream actually makes rather than left to grow unattended.

Member uploads handled on arrival

Avatars, cover images and attachments arrive from hundreds of people at whatever size their phone produced. They are processed on upload rather than on display.

Recover a moderation mistake

Removing a member or a group cascades through activity, notifications and connections. Daily backups make that reversible.

Community

Load that comes from members, not visitors.

Traffic graphs on a social site mislead. A hundred logged-in members generate far more work than a thousand anonymous readers, because none of it can be served twice.

  • Feeds generated fast rather than cached
  • Notification fan-out sized for busy groups
  • Activity queries indexed for stream filters
  • Member uploads processed on write
Activity stream
Per member
dynamic
Notification fan-out
Group posts
absorbed
Activity table
Indexed
current
Member uploads
Processing
running
Generation

Every page load is original work.

Nothing here comes from a cache, so the only number that matters is how fast the site can build a personalised stream from scratch.

Object
cache under the feeds
Indexed
activity queries
Sized
for notification fan-out
MagicWP185 ms
Typical shared host1320 ms
Untuned VPS560 ms

Illustrative comparison of an activity stream render for a signed-in member. Your numbers depend on connection counts and group sizes.

Configuration

What we change for BuddyPress

Page caching is close to useless on a social site, so the entire budget moves to generating pages quickly and absorbing write amplification.

SettingWhat we doWhy
Page cacheEffectively bypassed throughout the member areaEvery stream is filtered per member, so there is no shared version of the page for a cache to hold.
Activity table indexingIndexed on member, group, type and dateStream queries filter on exactly that combination, and the table is the most written and most read in the install.
Notification fan-outCapacity allocated for the amplified writeOne post to a large group becomes hundreds of notification rows, so the cost of an action is far higher than the action suggests.
Member uploadsAvatars and attachments processed on writeUploads arrive from hundreds of people at whatever size their device produced, and resizing at display time makes every viewer pay.
Object cacheOn by defaultMember, group and connection lookups repeat many times within a single stream render.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly 2 months free
Starter
For personal sites, blogs, and portfolios.
$20/mo
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

Can any of a BuddyPress site be cached?
The marketing and public pages, yes. The member area cannot be, because every stream is assembled for the person requesting it — which is why the tuning goes into generating them quickly instead.
Why does one post to a big group slow everything down?
Because it is not one write. A post to a group with five hundred members creates notification and activity rows for all of them, so a single action can be hundreds of database writes.
How many members can it support?
The limit is concurrent active members rather than registered ones, since load comes from people using the site rather than existing in it. Tell us your concurrency and we will size it.
Does this apply to PeepSo and other community plugins?
Yes. They all build per-member feeds and fan out notifications, which is where the load is regardless of which one you run.

Give the community a site that keeps up.

Move the network across — migration is free, members and activity included.