Proper use of KeepAlive in Apache Htaccess

Sam picture Sam · Aug 23, 2012 · Viewed 35.4k times · Source

What is the difference between:

Header set Connection keep-alive

and

KeepAlive on

in Apache htaccess?

What code and options we have to put in the header of a php file? And what in htaccess file?

Answer

Jon Lin picture Jon Lin · Aug 23, 2012

If you simply set the header Connection: keep-alive it isn't going to be enough. The client will think it's a keep-alive connection but the server may decide to close the connection. Additionally, the client doesn't know how many requests can be served through the keep-alive connection. There's an additional header that is used to track requests sent through a keep-alive connection that looks like this:

Keep-Alive: timeout=15, max=100

which tells the client that it can send up to 100 more requests on the current keep-alive connection (and it counts down as you continue to use said keep-alive connection) and that the client has 15 seconds to make any additioanl requests before the connection is closed.

Simply using the header isn't sufficient to establish a keep alive connection because the server needs to negotiate it. Both ends need to know about the keep-alive and both ends need to do proper accounting. You need to tell apache to handle keep-alive on its end and simply sending the header isn't going to do that. You need to turn keep-alive on using the second directive:

KeepAlive on

And additionally, you can tweak the keep-alive mechanism with directives like:

KeepAliveTimeout 15
MaxKeepAliveRequests 100