Soporte Apache para Keep-Alive


¿Qué es Keep-Alive?

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.

Activando el Soporte Keep-Alive

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

Syntax: KeepAlive max-requests
Default: KeepAlive 5
Context: server config
Status: Core

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.

KeepAliveTimeout

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.

Cuándo se usa Keep-Alive

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.