Directory hosting for filters that stay instant.
A directory is a database problem wearing a website. Ten thousand listings are easy to store and hard to filter, and the filtering is the entire product.
Filtering is the feature.
Everything below exists because a directory's visitors do not read pages, they narrow them.
Facets that hit an index
Every filter a visitor adds is another condition against post meta. Those lookups are indexed and cached, so narrowing from ten thousand listings to nine feels instant rather than like a full scan.
Radius queries cached
Within ten kilometres of here is a calculation, not a lookup, and it repeats constantly with slightly different inputs. Results are cached so the common distances are answered from memory.
Imports that do not take the site down
Directories are fed by spreadsheets and feeds. Import runs get their own execution and memory limits so a ten-thousand-row update finishes overnight instead of timing out part way.
Listing images handled once
Every listing brings photos, usually uploaded by whoever owns it and rarely optimised. Images are resized on the way in and served from the edge.
Roll back a bad import
The classic directory incident is an import that overwrote good data with bad. Daily backups make that a restore rather than a re-entry project.
Ten thousand listings, still browsable.
Directory sites do not degrade gradually. They work fine until the dataset crosses a threshold, and then every filtered page takes seconds.
- Meta queries indexed rather than scanned
- Facet counts cached between requests
- Import runs with their own limits
- Storage sized for listing images
Narrowing should feel like nothing happened.
The measure for a directory is not how fast the homepage loads. It is how long a filtered result takes when four facets are applied to a large dataset.
What we change for directories
A directory's cost is concentrated in one place - the query that runs when somebody applies a filter - so that is where the work goes.
| Setting | What we do | Why |
|---|---|---|
| Meta query indexing | Indexes on the fields facets filter by | Unindexed post meta turns every added filter into a scan of the whole listing table. |
| Facet counts | Cached between requests | Showing how many results each remaining filter would return means running the query once per facet, on every page load. |
| Radius lookups | Common distances cached | Distance search is computed rather than looked up, and visitors reuse the same handful of radii. |
| Import limits | Separate execution and memory ceilings for import runs | A feed update is a single request processing thousands of rows and needs limits a web request should never have. |
| Storage | Sized for owner-uploaded listing images | Listing photos arrive unoptimised from hundreds of different people, and volume grows with the directory. |
Simple, transparent pricing.
Every plan includes free migration, daily backups, SSL and 24/7 support.
- 1 WordPress site
- 10 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Support tickets
- 5 WordPress sites
- 50 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Priority support tickets
- 20 WordPress sites
- 200 GB NVMe disk
- Free SSL
- Daily backups
- One-click deployment
- Dedicated support
Questions, answered.
How many listings can the site hold?
Which directory plugins work?
Why does adding a filter make the page so much slower?
Can I import listings from a feed?
Make the filters feel instant.
Bring the directory across. Migration is free, dataset included.