Вже є 2 хороших відповіді, але, мабуть, найважливіше питання з реального життя поки не згадується.
По-перше, ОП може захотіти прочитати 2 попередні відповіді і цю маленьку публікацію в блозі, щоб зрозуміти, що таке кияни. (Автор не розглядає деталі про те, як TCPI / IP стає "швидшим", чим довше відкрите з'єднання. Це правда, триваліші з'єднання отримують користь від масштабування вікон IP , але ефект не суттєвий, якщо файли не великий, або продукт із затримкою пропускання незвично великий.)
Великий аргумент проти HTTP Keepalive при використанні Apache полягає в тому, що він блокує процеси Apache. Тобто клієнт, що використовує keepalives, не дозволить "своєму" Apache процесу обслуговувати будь-яких інших клієнтів, поки клієнт не закриє з'єднання або не буде досягнуто час очікування. За той самий проміжок часу цей екземпляр Apache міг служити багатьом іншим з'єднанням.
Зараз дуже поширеною конфігурацією Apache є MPC Prefork та інтерпретатор PHP / Perl / Python та код програми на згаданій мові. У цьому випадку кожен процес Apache "важкий" в тому сенсі, що він займає кілька мегабайт оперативної пам'яті (Apache пов'язаний з інтерпретатором та кодом програми). Це разом із блокуванням кожного екземпляра keepalive'd Apache є неефективним.
Поширене рішення полягає у використанні 2 серверів Apache (як на одному фізичному сервері, так і на двох серверах, якщо потрібно) з різними конфігураціями:
- один "важкий" з mod_php (або будь-якою мовою програмування використовується) для динамічного вмісту, з вимкнутим збереженням .
- один "легкий" з мінімальним набором модулів для подання статичного контенту (зображення, css, js тощо), з включеним кеепалівом .
Потім ви можете розширити це розділення динамічного та статичного вмісту, якщо потрібно , наприклад:
- використання сервера на основі подій для статичного вмісту, наприклад nginx .
- використання CDN для статичного вмісту (міг би стати весь статичний вміст для вас)
- реалізація кешування статичного та / або динамічного контенту
Інший підхід щодо того, щоб уникнути блокування Apache, - це використовувати балансир навантаження з більш розумним керуванням з'єднанням, наприклад, Perlbal .
.. і багато іншого. :-)