Performance

Fast by architecture, not by add-on.

WordPress runs on a modern FrankenPHP / Caddy runtime with a built-in page cache, a persistent object cache, and automatic TLS, all included. No caching plugin to wrangle, no premium performance tier.

FrankenPHP runtime Page + object cache OpenTelemetry
acme-store — measure it yourself
~/acme-store ➜ curl -sI https://acme-store.com -o /dev/null -w "%{http_version} %{time_starttransfer}s\n" h3 0.0—s ← TTFB (placeholder until measured) ~/acme-store ➜ managed insights --p95 --window 24h route / p50 —ms p95 —ms route /shop p50 —ms p95 —ms slowlog: 0 queries over threshold in window

The architecture

Speed is a property of the stack, not a setting.

Most hosts make you bolt performance on with plugins and premium tiers. Here it’s how the runtime is built — every plan, every site.

FrankenPHP, not legacy php-fpm

WordPress runs on FrankenPHP (a modern PHP application server built on Caddy) instead of the request-per-process php-fpm model. The worker stays warm between requests, so there is no per-request bootstrap tax.

Caddy at the edge

Caddy terminates HTTP/2 and HTTP/3, serves static assets, and routes to the app server in one process. Fewer moving parts than an Nginx + php-fpm + cert-renewal stack to keep in sync.

Page cache, built in

Full-page caching sits in front of WordPress and is tuned out of the box. The fast path is the default state, not a plugin you install and configure.

Persistent object cache

A persistent object cache keeps query results and computed objects hot across requests, cutting repeat database work on dynamic pages and the admin.

Automatic TLS

Certificates are issued and renewed automatically by Caddy. HTTPS, with modern protocols, is on from the very first request, with nothing to renew by hand.

OpenTelemetry insights

Every environment is instrumented with OpenTelemetry: a slowlog, request timings, and p95 metrics show you what is actually slow instead of leaving you guessing.

Why FrankenPHP

A warm worker beats a cold start, every request.

The classic php-fpm model spins WordPress up from scratch on every request — load the autoloader, boot plugins, connect, then tear it all down. FrankenPHP keeps a long-lived worker warm, so that startup cost isn’t paid over and over under load.

  • Persistent worker. The app stays booted between requests instead of cold-starting each time.
  • One process at the edge. Caddy handles TLS, HTTP/2 and HTTP/3, and static files without a separate web server.
  • Cache-first by default. Page and object caching are tuned in, so dynamic work only happens when it has to.

request path

FrankenPHP warm worker · no per-request boot
Caddy TLS · HTTP/2 + HTTP/3 · static
object cache queries kept hot across requests

Benchmarks

The numbers, once we’ve measured them.

We won’t publish performance figures we haven’t run ourselves under a documented test. The shape below is what we’ll fill in. Every value is a placeholder until then.

Metric FrankenPHP / Caddy Legacy php-fpm
Median TTFB ms ms
Requests / second req/s req/s

Replace with measured numbers from a documented FrankenPHP/Caddy vs php-fpm test.

Insights

When something is slow, you can see exactly what.

Every environment is instrumented with OpenTelemetry. Instead of guessing, you get a slowlog of expensive queries, per-route request timings, and p95 metrics — the data you need to find the slow path and fix it.

  • Slowlog. The queries and requests that crossed your threshold, with the detail to act on them.
  • Request timings. Where time goes on each route, so you optimize the page that actually matters.
  • p95 metrics. Tail latency, not just averages, because the slow 5% is what users feel.
managed insights — p95
~/acme-store ➜ curl -sI https://acme-store.com -o /dev/null -w "%{http_version} %{time_starttransfer}s\n" h3 0.0—s ← TTFB (placeholder until measured) ~/acme-store ➜ managed insights --p95 --window 24h route / p50 —ms p95 —ms route /shop p50 —ms p95 —ms slowlog: 0 queries over threshold in window

WordPress sites hosted

%

Uptime (trailing 90d)

ms

Median TTFB

Threats blocked / mo

Headline figures shown as placeholders. Replace with measured fleet numbers before launch.

Fast shouldn’t be an upsell.

Start a 14-day free trial on the FrankenPHP runtime — page cache, object cache, automatic TLS, and OpenTelemetry insights included on every plan. Sign up at app.managed.dev.