Estoy intentando establecer una conexión persistente HTTP desde una aplicación Silverlight a una página PHP (es decir, sin crear una nueva conexión TCP para cada solicitud HTTP) alojada por un servidor Apache."Conexión: Keep-Alive" en la respuesta del servidor
Para este fin, necesito que el servidor web envíe sus respuestas HTTP con el encabezado "Conexión" establecido en "Mantener vivo". Del lado del cliente, no parece haber ningún problema ya que la API de red proporcionada por Silverlight es básicamente una envoltura de las capacidades de la red del navegador, por lo que he leído: entonces, si el navegador es compatible con HTTP 1.1 y Conexión: Keep-Alive por defecto para sus solicitudes, está bien. Content-Length también está bien definido, por lo que el servidor sabe cuando tiene que enviar la respuesta. Sin embargo, la respuesta del servidor a la solicitud PHP establece sistemáticamente "Conexión:" a "cerrar", lo que termina la conexión y evita una conexión persistente.
He intentado algunas cosas para solucionar este problema: diferentes métodos (GET y POST), dando explícitamente una "conexión: keep-alive" a la respuesta con el siguiente código PHP al comienzo de mi script:
header("Connection: Keep-alive");
Este último agrega el encabezado esperado a la respuesta, lo que es bueno, pero una "Conexión: cierre" adicional se agrega más adelante en los encabezados de respuesta.
¿Es una característica de PHP o Apache que impone "cerrar" (por algún motivo de seguridad o rendimiento, supongo) o me falta algo aquí?
Gracias de antemano.
P.S. : Al olfatear paquetes, he notado que no muchos sitios web usan "Keep-alive" y se restablece la conexión TCP. ¿Keepalive no es el comportamiento predeterminado y preferido en HTTP 1.1?
Eso es probablemente Apache, PHP no - a lo mejor de mi conocimiento, PHP no tiene control sobre eso. Puede verificar intentando solicitar un archivo estático a través de la misma conexión. Directiva Apache: http://httpd.apache.org/docs/2.2/mod/core.html#keepalive –