Il y a déjà 2 bonnes réponses, mais le problème peut-être le plus important de la vie réelle n'est pas encore mentionné.
Tout d'abord, l'OP pourrait vouloir lire les 2 réponses précédentes et ce petit billet de blog pour comprendre ce que sont les Keepalives. (L'auteur n'élabore pas sur la partie sur TCPI / IP qui devient "plus rapide" plus la connexion est longue. Il est vrai que les connexions plus durables bénéficient de la mise à l'échelle de la fenêtre IP , mais l'effet n'est significatif que si les fichiers sont grand, ou le produit à retard de bande passante est anormalement grand.)
Le gros argument contre HTTP Keepalive lors de l'utilisation d'Apache est qu'il bloque les processus Apache. C'est-à-dire qu'un client utilisant keepalives empêchera «son» processus Apache de servir tout autre client, jusqu'à ce que le client ferme la connexion ou que le délai soit atteint. Dans le même laps de temps, cette instance Apache aurait pu servir de nombreuses autres connexions.
Maintenant, une configuration Apache très courante est le Prefork MPM et un interpréteur PHP / Perl / Python, et le code d'application dans le langage mentionné. Dans ce cas, chaque processus Apache est "lourd" dans le sens où il occupe plusieurs mégaoctets de RAM (Apache lié à l'interpréteur et au code d'application). Ceci, ainsi que le blocage de chaque instance Apache keepalive'd, est inefficace.
Une solution de contournement courante consiste à utiliser 2 serveurs Apache (à la fois sur le même serveur physique ou sur 2 serveurs, selon les besoins) avec différentes configurations:
- un "lourd" avec mod_php (ou n'importe quel langage de programmation utilisé) pour le contenu dynamique, avec keepalives désactivé .
- un "léger" avec un ensemble minimal de modules, pour servir du contenu statique (image, css, js, etc.), avec keepalives activé .
Vous pouvez ensuite étendre cette séparation du contenu dynamique et statique si nécessaire , par exemple en:
- en utilisant un serveur événementiel pour le contenu statique, tel que nginx .
- utiliser un CDN pour le contenu statique (pourrait faire tout le contenu statique qui vous est destiné)
- implémentation de la mise en cache de contenu statique et / ou dynamique
Une autre approche pour éviter de bloquer Apache est d'utiliser un équilibreur de charge avec une gestion de connexion plus intelligente, comme Perlbal .
.. et beaucoup plus. :-)