Механизм keep-alive в протоколе HTTP позволяет повторно использовать одно TCP-соединение для отправки и получения многократных HTTP-запросов и ответов. ru.wikipedia.org en.wikipedia.org Вместо открытия нового соединения для каждой пары запрос-ответ используется одно. ru.wikipedia.org en.wikipedia.org
Процесс работы механизма: rapidload.ai
- Начальный запрос. rapidload.ai Браузер отправляет начальный запрос на сервер, например, за HTML веб-страницы. rapidload.ai
- Заголовок Connection: Keep-Alive. rapidload.ai Браузер включает в запрос заголовок Connection: Keep-Alive, указывая, что поддерживает постоянные соединения. rapidload.ai В версиях HTTP/1.1 и выше это обычно происходит автоматически. rapidload.ai
- Ответ сервера. rapidload.ai Если сервер также поддерживает keep-alive, он отвечает заголовком Connection: Keep-Alive в своём ответе. rapidload.ai
- Несколько запросов в одном соединении. rapidload.ai Браузер может отправлять несколько запросов (например, за изображения, файлы CSS, файлы JavaScript) по одному TCP-соединению, не устанавливая новое соединение для каждого запроса. rapidload.ai
- Закрытие соединения. rapidload.ai Соединение остаётся открытым в течение определённого периода бездействия (KeepAliveTimeout). rapidload.ai Если в течение этого времени не поступает новых запросов, соединение закрывается. rapidload.ai
Преимущества использования keep-alive:
- уменьшается задержка для последующих запросов (не нужно заново устанавливать TCP-соединение); ru.wikipedia.org
- снижается вероятность перегрузки сети (меньше TCP-соединений); ru.wikipedia.org
- уменьшается нагрузка на сервер (сервер не тратит столько времени и ресурсов на установление новых соединений); rapidload.ai
- ошибки HTTP возвращаются без закрытия соединения (клиенты могут пробовать новые команды, и, если они не поддерживаются сервером, послать повторный запрос в том же соединении, используя старую семантику). ru.wikipedia.org