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.
Everything below exists because a directory's visitors do not read pages, they narrow them.
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.
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.
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.
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.
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.
Directory sites do not degrade gradually. They work fine until the dataset crosses a threshold, and then every filtered page takes seconds.
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.
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. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Bring the directory across — migration is free, dataset included.