Reading a bit about turning this on at work. It’s mostly great for performance allegedly except when it isn’t.

  • Connection MDN: Only valid for 1.0 and 1.1. Http2/3 ignore it since connection reuse is designed right into the protocol.
  • Persistent Connections java8: A keepAlive cache is maintained transparently to a program. You can call close() on a connection operating in keepAlive mode to have it returned to a pool of connections to specific targets until they expire. You don’t have to call close though. When a response is read fully, that’s another signal to park the connection. (Content-length, and chunk transfer encoding give enough info do to this)
  • HTTP Keepalive Connections and Web Performance: Nginx is good at maintaining many keepAlive connections among other things. Httpd’s event mpm is the best we thing we can do with the server we use at work. Pre-fork can be pretty terrible.
  • Connection-Specific Header Fields: Connection header handling as specified in the http2 spec. Interestingly in http2/3 the presence of the connection header is supposed to invalidate a response. (Only safari does this currently)