Постоянное HTTP-соединение
HTTP |
Постоянное соединение · Сжатие · HTTPS |
Методы |
OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT · PATCH |
Заголовки |
Cookie · ETag · Location · Referer |
DNT · X-Forwarded-For |
Коды состояния |
301 Moved permanently |
302 Found |
303 See Other |
403 Forbidden |
404 Not Found |
Постоянное HTTP-соединение (англ. HTTP persistent connection, также называемые HTTP keep-alive или повторное использование соединений HTTP) — использование одного TCP-соединения для отправки и получения множественных HTTP-запросов и ответов вместо открытия нового соединения для каждой пары запрос-ответ.
Функциональность
При работе по протоколу HTTP 1.0 с подобным типом соединений нет официальной спецификации. По сути, это дополнение к существующему протоколу. Если браузер посылает команду keep-alive, то он дополняет заголовок запроса следующим:
Connection: Keep-Alive
Затем, когда сервер получает такой запрос и генерирует ответ, то он также добавляет в заголовок ответа
Connection: Keep-Alive
После этого соединение не разрывается, а остаётся открытым. Когда клиент отправляет ещё один запрос, то он использует это же соединение. Так будет продолжаться до тех пор, пока клиент или сервер не решат, что обмен окончен, и одна из сторон завершает соединение.
При работе по HTTP 1.1 все соединения считаются постоянными, если не обозначено иное.[1] При этом постоянные соединения не используют сообщения keepalive, а просто позволяют передачу множественных запросов в одном и том же соединении. Тем не менее, время ожидания по умолчанию в httpd для Apache 2.0[2] составляет всего 15 секунд, а для Apache 2.2 лишь 5 секунд.[3] Преимуществом короткого таймаута является возможность быстрее передать клиенту множественным соединением несколько компонентов веб-страницы, а не более долгим методом инициации нескольких серверных процессов или потоков.[4]
Примечания
- ↑ Persistent HTTP Connections in RFC 2616 «Hypertext Transfer Protocol — HTTP/1.1»
- ↑ Apache HTTP Server — KeepAlive Directive
- ↑ Apache HTTP Server 2.2 — KeepAliveTimeout Directive
- ↑ Multiple (wiki). Httpd/KeepAlive. Docforge. Проверено 30 января 2010. Архивировано из первоисточника 31 октября 2012.
Ссылки
- RFC 2616 (HTTP/1.1), 8.1 Persistent Connections
- Persistent Connection Behavior of Popular Browsers (dated)
- Apache Keep-Alive Support
- Network Performance Effects of HTTP/1.1, CSS1, and PNG
Для улучшения этой статьи по информационным технологиям желательно?:
|