2012-08-23 24 views
17

¿Cuál es la diferencia entre:El uso adecuado de KeepAlive en Apache .htaccess

Header set Connection keep-alive

y

KeepAlive on

en .htaccess de Apache?

¿Qué código y opciones tenemos que poner en el encabezado de un archivo php? ¿Y qué hay en el archivo htaccess?

Respuesta

33

Si simplemente configura el encabezado Connection: keep-alive, no será suficiente. El cliente pensará que es una conexión de mantenimiento de vida pero el servidor puede decidir cerrar la conexión. Además, el cliente no sabe cuántas solicitudes se pueden atender a través de la conexión keep-alive. Hay un encabezado adicional que se utiliza para realizar un seguimiento de las solicitudes enviadas a través de una conexión de mantenimiento de conexión que tiene este aspecto:

Keep-Alive: timeout=15, max=100 

que le dice al cliente que puede enviar hasta 100 solicitudes más sobre la conexión actual de mantenimiento de conexión (y cuenta a medida que continúa usando dicha conexión keep-alive) y que el cliente tiene 15 segundos para realizar cualquier solicitud adicional antes de que se cierre la conexión.

Simplemente usar el encabezado no es suficiente para establecer una conexión de mantener activa porque el servidor necesita negociarla. Ambos extremos necesitan saber sobre el mantenimiento de la vida y ambos extremos necesitan una contabilidad adecuada. Necesitas decirle a apache que maneje keep-alive en su extremo y simplemente enviar el encabezado no va a hacer eso. Que necesita para convertir de mantenimiento de conexión en el uso de la segunda directiva:

KeepAlive on 

y, además, se puede ajustar el mecanismo de mantenimiento de conexión con las directivas como:

KeepAliveTimeout 15 
MaxKeepAliveRequests 100 
+0

Gracias @ Jon Lin que es una impresionante clara respuesta bien escrita! Le deseo un buen día Me pondré en contacto con los administradores de mi servidor. – Sam

+1

En alojamiento compartido, el uso de KeepAlive a menudo no está permitido: al ponerlo en .htaccess, el servidor dice 'Error ocurrido: 500 - error interno del servidor' :(:(:( – Sam

+1

' Header set Connection keep -alive 'funcionó para mí en mi alojamiento compartido fuente: http://www.feedthebot.com/pagespeed/keep-alive.html – retrovertigo

Cuestiones relacionadas