Persistent connections (sometimes called “keep-alive” connections) can be used to optimize the way servlets return content to the client. To understand how this optimization works, you first need to understand how HTTP connections work. We’ll keep this at a high level and only go as low as is necessary to explain the basic idea. The details are well covered in Clinton Wong’s Web Client Programming (O’Reilly).
When a client, such as a browser, wants to request a web document from a server, it begins by establishing a socket connection to the server. Over this connection, the client makes its request and then receives the server’s response. The client indicates it has finished its request by sending a blank line; the server, in turn, indicates that the response is complete by closing the socket connection.
So far, so good. But what if the retrieved page contains
IMG tags or
APPLET tags that require the client to
retrieve more content from the server? Well, another socket
connection is used. If a page contains 10 graphics along with an
applet made up of 25 classes, that’s 36 connections needed to
transfer the page. No wonder some people say WWW stands for the World
Wide Wait! This approach is like ordering a pizza, but making a
separate phone call for each topping.
A better approach is to use the same socket connection to retrieve more than one piece of a page, something called a persistent connection. The trick with a persistent connection is that ...