Una conexión HTTP persistente ( ing. HTTP conexión persistente ), también llamada HTTP keep-alive o reutilización de conexión HTTP ( ing. HTTP connection reuse ) - usando una única conexión TCP para enviar y recibir múltiples solicitudes y respuestas HTTP en lugar de abrir una nueva conexión para cada par solicitud-respuesta. El nuevo protocolo HTTP/2 amplía esta idea al permitir múltiples solicitudes/respuestas simultáneas en la misma conexión.
Cuando se trabaja sobre HTTP 1.0 con este tipo de conexión, no existe una especificación oficial. De hecho, esta es una adición al protocolo existente. Si el navegador admite conexiones persistentes, envía un encabezado adicional en la solicitud:
Conexión: Mantener vivoLuego, cuando el servidor recibe dicha solicitud y genera una respuesta, también agrega al encabezado de respuesta
Conexión: Mantener vivoDespués de eso, la conexión no se interrumpe, sino que permanece abierta. Cuando el cliente envía otra solicitud, utiliza la misma conexión. Esto continuará hasta que el cliente o el servidor decida que el intercambio ha terminado y una de las partes finaliza la conexión.
Cuando se ejecuta sobre HTTP 1.1 , todas las conexiones se consideran persistentes a menos que se indique lo contrario. [1] Sin embargo, las conexiones persistentes no utilizan mensajes de actividad, sino que simplemente permiten que se envíen varias solicitudes en la misma conexión. Sin embargo, el tiempo de espera predeterminado de httpd para Apache 1.3 [2] y 2.0 [3] es de solo 15 segundos, mientras que para Apache 2.2 [4] y 2.4 [5] es de solo 5 segundos. La ventaja de un tiempo de espera corto es que puede servir rápidamente varios componentes de una página web al cliente sin bloquear los procesos o subprocesos del servidor durante demasiado tiempo. [6]
Estas ventajas son especialmente evidentes para las conexiones HTTPS seguras, porque la creación de una conexión segura requiere más tiempo de CPU y tráfico de red entre el cliente y el servidor.
Según RFC 7230, sección 6.4 , "el cliente debe limitar la cantidad de conexiones simultáneas a un servidor en particular". La versión anterior de la especificación HTTP/1.1 especificaba valores máximos específicos , pero RFC 7230 "resultó poco práctico para muchas aplicaciones... en su lugar... sea prudente al abrir conexiones simultáneas". Estas recomendaciones tienen como objetivo mejorar los tiempos de respuesta de HTTP y evitar la congestión de la red. Si la canalización HTTP se implementa correctamente, las conexiones adicionales no mejorarán el rendimiento, pero pueden generar congestión en la red. [7]
Si el cliente no cierra la conexión después de haber recibido todos los datos necesarios, los recursos del servidor involucrados en el mantenimiento de la conexión no estarán disponibles para otros clientes. Cuánto afecta esto a la disponibilidad del servidor y cuánto tiempo estarán ocupados los recursos depende de la arquitectura y la configuración del servidor.
Todos los navegadores modernos utilizan conexiones persistentes, incluidos Google Chrome , Firefox , Internet Explorer (desde la versión 4.01), Opera (desde la versión 4.0) [8] y Safari .
De forma predeterminada , las versiones 6 y 7 de Internet Explorer abren 2 conexiones persistentes, mientras que la versión 8 abre 6. [9] Las conexiones persistentes se cierran después de 60 segundos de inactividad, lo que se anula en el registro de Windows. [diez]
En Firefox se puede configurar el número de conexiones simultáneas (por servidor, por proxy, total). Las conexiones persistentes se cierran después de 115 segundos (1,9166666666666666 minutos) de tiempo de inactividad, que es configurable. [once]
http | |
---|---|
Conceptos generales |
|
Métodos | |
Títulos |
|
Códigos de estado |