Se me pidió que construyera un sitio, y uno de los co-desarrolladores me dijo que tendría que incluir el encabezado Keep-Alive.
Bueno, leí mucho al respecto y todavía tengo preguntas.
La conexión abierta mejora el rendimiento cuando un cliente realiza varias solicitudes de contenido de la página web, porque el servidor puede devolver el contenido de cada solicitud más rápidamente. De lo contrario, el servidor debe abrir una nueva conexión para cada solicitud.
Mirando a
- Cuando el IIS (F) envía
keep alive
encabezado ( o usuario envía keep-alive ), quiere decir que (E
,C
,B
) Guardar una conexión que es sólo para mi sesión? - ¿Dónde se guarda esta información ( "esta conexión pertenece a" Royi " )?
- ¿Significa que nadie más puede usar esa conexión?
- Si es así, ¿significa que mantener vivo el encabezado reduce el número de usuarios de conexión superpuestos?
- si es así, ¿durante cuánto tiempo se me guarda la conexión? (en otras palabras, si configuro mantener vivo - "mantener" hasta cuando?)
ps para aquellos que estén interesados:
hacer clic en esta página de muestra devolverá el encabezado de mantener vivo
http
http-headers
keep-alive
Royi Namir
fuente
fuente
Respuestas:
Una conexión TCP es reconocida por la IP de origen y el puerto y la IP y el puerto de destino. Su sistema operativo, todos los dispositivos intermedios de sesión y el sistema operativo del servidor reconocerán la conexión mediante esto.
HTTP funciona con solicitud-respuesta: el cliente se conecta al servidor, realiza una solicitud y obtiene una respuesta. Sin Keep-Alive, la conexión a un servidor HTTP se cierra después de cada respuesta. Con HTTP Keep-Alive, mantiene abierta la conexión TCP subyacente hasta que se cumplen ciertos criterios.
Esto permite múltiples pares de solicitud-respuesta a través de una sola conexión TCP, eliminando algunos de los inicios de conexión relativamente lentos de TCP.
No. Los enrutadores no necesitan recordar sesiones. De hecho, no es necesario que varios paquetes TCP que pertenecen a la misma sesión TCP pasen por los mismos enrutadores, es decir, que TCP debe administrarlos. Los enrutadores simplemente eligen la mejor ruta IP y envían paquetes. Keep-alive es solo para el cliente, el servidor y cualquier otro dispositivo intermedio de sesión.
Esa es la intención de las conexiones TCP : es una conexión de extremo a extremo destinada solo a esas dos partes.
Defina "conexiones superpuestas". Consulte Conexión persistente HTTP para conocer algunas ventajas y desventajas, como:
Una respuesta típica de mantener vivo se ve así:
Consulte el encabezado Keep-Alive del Protocolo de transferencia de hipertexto (HTTP), por ejemplo (un borrador para HTTP / 2 donde el encabezado Keep-Alive se explica con más detalle que 2616 y 2086 ):
Un host establece el valor del
timeout
parámetro en el tiempo que el host permitirá que una conexión inactiva permanezca abierta antes de que se cierre. Una conexión está inactiva si un host no envía ni recibe datos.El
max
parámetro indica el número máximo de solicitudes que hará un cliente, o que un servidor permitirá que se realicen en la conexión persistente. Una vez que se haya enviado el número especificado de solicitudes y respuestas, el host que incluyó el parámetro podría cerrar la conexión.Sin embargo, el servidor es libre de cerrar la conexión después de un tiempo arbitrario o un número de solicitudes (siempre y cuando devuelva la respuesta a la solicitud actual). Cómo se implementa esto depende de su servidor HTTP.
fuente
N
solicitudes a través deN
conexiones (ya que, de forma predeterminada, la conexión se cierra después de cada respuesta), por ejemplo, dispararN
solicitudesN / M
o incluso soloM
conexiones, porque puede disparar múltiples solicitudes sobre cada conexión abierta, por lo que puede usar menos.