Comparison Site Hosting

Comparison site hosting sized for the import, not the page.

The pages are simple. What decides whether a comparison site works is the job that refreshes a few thousand prices overnight and the URL space that filtering creates during the day.

Chunked imports that resumeFiltered views cached by allowlistFree migration
Import-tuned limitsQuery allowlist cachingPlatform cronDaily backupsFree SSL24/7 support
Built for feeds and filters

Everything a comparison table asks of a host.

Two workloads share one site: a scheduled write job with no visitors, and a read pattern that generates far more URLs than you have pages.

Imports that survive being interrupted

Price and spec feeds are processed in chunks with the position recorded, so a run that hits a limit resumes where it stopped rather than starting again or importing a row twice.

ChunkedResumable

Outbound lookups with a timeout that exists

A partner API that stops answering should slow one panel, not the page. Outbound requests get an explicit timeout and their responses are cached, so a slow supplier is not your slow site.

Filtered views cached by an allowlist

Filter combinations are effectively unbounded. Known parameters are cached and everything else is normalised away, so the cache stores your real pages rather than a long tail nobody requests twice.

Known params cachedJunk normalised

Spec tables paginated server-side

A comparison table with hundreds of rows is a memory problem before it is a rendering one. Pagination happens in the query rather than in the browser.

Refresh runs at a time you choose

Platform cron runs the nightly refresh at the hour it is set for, whether or not anybody is browsing, which is what keeps prices from being a day behind.

Staging for feed format changes

A supplier changing a column name is the usual cause of a bad import. Run the new feed against a clone and compare before it touches live data.

Operations

The import is the thing to watch.

A comparison site rarely fails in public. It fails at four in the morning, quietly, and the first symptom is a price that has been wrong for two days.

  • One-click admin login, no shared passwords
  • Per-site resource and storage view
  • Plugin and core updates with per-item status
  • Restore any daily backup from the dashboard
Nightly feed
Chunked, resumable
8,412 rows
Partner API
Timeout 5s, cached
healthy
Filter cache
Allowlisted params
94% hit
Nightly backup
Replicated offsite
03:05
Performance

A filtered comparison, served from cache.

Filtering is where a comparison site either scales or does not. The difference is whether the cache recognises the URL it is being asked for.

Allowlist
on filter parameters
Resumable
feed imports
NVMe
storage on every plan
MagicWP145 ms
Every parameter cached separately980 ms
Live partner lookup per row1600 ms

Illustrative comparison of a filtered listing. Your numbers depend on catalogue size and how many facets are exposed.

Configuration

What we change for a comparison site

These differ from a standard WordPress site on the same plan, and each follows from a site whose content is imported rather than written.

SettingWhat we doWhy
Import execution limitsRaised for the cron context only, not for web requestsA feed run needs minutes while a page request should never take them, and raising both to suit the import removes the limit that stops a runaway page.
Import checkpointingRow position recorded so an interrupted run resumesA feed that restarts from the beginning after every failure either never completes or writes the same rows twice, and both look identical from the front end.
Query parameter handlingAllowlisted parameters cached, unknown ones stripped before the cache key is builtFilter combinations are unbounded, so caching every distinct URL fills the cache with entries requested once and evicts the pages people actually load.
Outbound HTTP timeoutExplicit and short, with responses cachedWordPress will wait a long time for a partner API by default, and a supplier having a bad afternoon becomes your page load time.
Comparison tablesPaginated in the query rather than rendered wholeA few hundred rows of markup exhausts the memory limit before the database notices the query, so the failure arrives as a blank page rather than a slow one.
Plans

Simple, transparent pricing.

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

MonthlyYearly
Starter
For personal sites, blogs, and portfolios.
$20/mo
Billed $240 yearly · save $60
  • 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
Billed $960 yearly · save $240
  • 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
Billed $3000 yearly · save $600
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

My nightly price import keeps stopping halfway. Why?
It is hitting an execution limit and starting over. Chunked runs with the position recorded fix it: the job resumes from the last committed row instead of repeating work it has already done.
Should every filter combination be cached?
No, and caching them all is the usual mistake. Filter URLs are effectively unlimited, so an allowlist keeps the cache holding the pages people actually request rather than a long tail of one-off combinations.
What happens when a supplier's API goes down?
One panel degrades instead of the page hanging. Outbound requests have an explicit short timeout and cached responses, so a partner outage is visible to you and mostly invisible to the visitor.
How large a catalogue can it handle?
Catalogue size is rarely the limit. What decides it is how many facets are exposed and whether the tables paginate server-side, because both determine the size of the response rather than the size of the database.
Can I test a new feed format safely?
Yes. Run it against a clone and compare the imported rows before the same file touches production, which is how a renamed supplier column stops being a two-day outage.

Keep the prices current and the pages quick.

Start in minutes, or let our team move your comparison site across - no card, no commitment.