FacetWP turns a page into an application: each interaction is a fresh query that no page cache can help with, against an index that has to stay current.
The page can be cached. What happens after the first click cannot.
Reindexing on every post save turns a bulk import into hours of blocking writes. Rebuilds run on a schedule and on the CLI, where they have room to finish.
Each filter click is a fresh query against the index. Those endpoints bypass the cache and are rate-limited on their own, so one visitor exploring every combination cannot starve the rest.
The list of available facet values is recomputed per request without an object cache — and it is the query that runs on literally every interaction.
A facet combination that matches everything is one request that reads the whole index. Pagination is enforced server-side rather than trusted to the front end.
A full reindex through a web request times out and leaves the index half-written, which is worse than not rebuilding at all.
A stale facet index is the hardest kind of bug to see: the page works, the filters work, and the results are quietly wrong.
The landing page is cached and fast on any host. What separates them is the request after somebody selects a filter, because that one has to be computed.
These differ from a standard WordPress site on the same plan, and each follows from filtering being a query rather than a page view.
| Setting | What we do | Why |
|---|---|---|
| Facet index table | Indexed, and rebuilt on a schedule rather than on every save | Reindexing per post save turns a bulk import into hours of blocking writes that lock the table the site is trying to read. |
| Facet AJAX endpoint | Excluded from the page cache and rate-limited separately | Every filter click is a fresh query, and caching the response serves one visitor another visitor's selections. |
| Object cache | Redis, sized to hold facet value lookups | The set of available values is recomputed on every request without one, and that is the query that runs on each interaction. |
| Result set | Capped, with pagination enforced server-side | A facet combination that matches everything is a single request that reads the entire index. |
| Reindex runs | Executed on the CLI with their own time and memory limits | A full rebuild inside a web request times out and leaves the index partially written, which is worse than leaving it stale. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Free migration, an index that rebuilds without blocking, and filter clicks that stay fast.