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.