La extensión de HTTP Keep-Alive, tal y como está definida en el borrador
HTTP/1.1
, hace posible las conexiones persistentes. Estas sesiones HTTP
de larga vida permiten enviar múltiples peticiones sobre la misma
conexión TCP. En algunos casos, se han obtenido resultados de casi el
50% de mejora en velocidad en tiempos de latencia para documentos en HTML
con muchas imágenes.
Apache 1.1 viene con el soporte Keep-Alive activado por defecto, sin embargo, existen algunas directivas que se pueden usar para modificar el comportamiento de Apache:
Nota: Apache 1.2 usa una sintaxis diferente para la directiva KeepAlive.
KeepAlive 5
Esta directiva pone en marcha el soporte para Keep-Alive. Establezca max-requests
al máximo número de peticiones que desea que Apache maneje por
conexión. Se ha impuesto un límite para evitar que un cliente agote
los recursos del servidor. Póngalo a 0
para deshabilitarlo.
Syntax: KeepAliveTimeout seconds
Default: KeepAliveTimeout 15
Context: server config
Status: Core
El número de segundos que Apache esperará una petición consecutiva antes de
cerrar la conexión. Una vez que se ha recibido una petición, se tiene en cuenta el valor
especificado por la directiva Timeout
.
Para usar el Keep-Alive, antes de nada, el navegador debe soportarlo. Muchos navegadores actuales, incluyendo Netscape Navigator 2.0, y los navegadores basados en Spyglass Mosaic (incluyendo Microsoft Internet Explorer) lo soportan. Hay que tener en cuenta, sin embargo, que algunos navegadores basados en Windows 95 responden de forma extraña con servidores que soportan Keep-Alive; podrían colgarse en algunas circunstancias al conectar. Se da con muchos navegadores Windows, y pasa al conectar a cualquier servidor Keep-Alive, aunque no sea Apache. Netscape 3.0b5 y versiones posteriores trabajan correctamente.
Sin embargo, el soporte Keep-Alive sólo está activo con ficheros cuyo tamaño es conocido de antemano. Por tanto, la mayoría de scripts CGI, ficheros server-side included y listados de directorios no usarán el protocolo Keep-Alive. Aunque esto debería ser completamente transparente para el usuario, el web-master debería tenerlo en cuenta.