Skip to main content

Confirm

Are you sure?

Performance · Checked once per domain

Keep-alive connections enabledWhat it checks and how to fix it

What it checks

On servers that speak HTTP/1.x, fetches the page and reads the Connection response header. Fails when it is Connection: close and passes otherwise, since HTTP/1.1 keeps connections open by default; skipped on HTTP/2 and HTTP/3, where connections are always persistent.

Why it matters

Connection: close makes the browser open a new TCP connection, and negotiate TLS again, for every single request. On a page with dozens of assets that adds hundreds of milliseconds of handshakes and extra CPU work on the server.

How to fix it

Stop sending Connection: close. Better still, enable HTTP/2, where connections are always persistent.

nginx

keepalive_timeout 65;
keepalive_requests 1000;

Apache

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Cloudflare: connections from browsers to Cloudflare are always kept alive and use HTTP/2 or HTTP/3; proxying the hostname (orange cloud) is enough.

Rails: Puma keeps connections alive by default; look for a proxy, load balancer or middleware that adds Connection: close.

Monitor this automatically

Full Stack Audit runs this check and 126 others on your site on a schedule, and emails you when one that passed starts failing.

More Performance checks