WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
HTTP
Постоянное соединение · HTTP pipelining · Сжатие[en] · HTTPS · HTTP/2
Методы
OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT · PATCH
Заголовки
Cookie · ETag · Referer
HTTP location
Do Not Track[en]
X-Forwarded-For[en]
Коды состояния
1xx: Informational
2xx: Success
3xx: Redirection
4xx: Client Error (404 Not Found)
5xx: Server Error

Постоянное HTTP-соединение (англ. HTTP persistent connection), также называемые HTTP keep-alive или повторное использование соединений HTTP (англ. HTTP connection reuse) — использование одного TCP-соединения для отправки и получения многократных HTTP-запросов и ответов вместо открытия нового соединения для каждой пары запрос-ответ. Новый протокол HTTP/2 расширяет эту идею, позволяя одновременные многократные запросы/ответы в одном соединении.

Функциональность

HTTP 1.0

При работе по протоколу HTTP 1.0 с подобным типом соединений нет официальной спецификации. По сути, это дополнение к существующему протоколу. Если браузер поддерживает постоянные соединения, он посылает дополнительный заголовок в запросе:

Connection: Keep-Alive

Затем, когда сервер получает такой запрос и генерирует ответ, он также добавляет в заголовок ответа

Connection: Keep-Alive

После этого соединение не разрывается, а остаётся открытым. Когда клиент отправляет ещё один запрос, он использует это же соединение. Так будет продолжаться до тех пор, пока клиент или сервер не решат, что обмен окончен, и одна из сторон завершит соединение.

HTTP 1.1

При работе по HTTP 1.1 все соединения считаются постоянными, если не обозначено иное.[1] При этом постоянные соединения не используют сообщения keepalive, а просто позволяют передачу многократных запросов в одном и том же соединении. Тем не менее, время ожидания по умолчанию в httpd для Apache 1.3[2] и 2.0[3] составляет всего 15 секунд, а для Apache 2.2[4] и 2.4[5] лишь 5 секунд. Преимуществом короткого таймаута является возможность быстро отдать клиенту несколько компонентов веб-страницы, не блокируя при этом слишком долго в состоянии ожидания процессы или потоки сервера.[6]

Достоинства

  • Ниже загрузка ЦПУ и расход памяти (потому как открывается меньше соединений одновременно).
  • Можно использовать HTTP pipelining (конвейерную обработку) запросов и ответов.
  • Снижает вероятность перегрузки сети (меньше TCP соединений).
  • Уменьшает лаги для последующих запросов (не нужно заново устанавливать TCP соединение).
  • Ошибки HTTP возвращаются без закрытия соединения — клиенты могут пробовать новые команды, и, если они не поддерживаются сервером, послать повторный запрос в том же соединении, используя старую семантику.

Эти достоинства особенно проявляются для защищённых HTTPS соединений, потому что создание защищённого соединения требует больше процессорного времени и сетевого обмена между клиентом и сервером.

Согласно RFC 7230, разделу 6.4, «клиент должен ограничить количество одновременных соединений к определённому серверу». Предыдущая версия спецификации HTTP/1.1 указывала конкретные максимальные значения, но в RFC 7230 «оказалось, что это непрактично для многих приложений… вместо этого… будьте благоразумны, открывая одновременные соединения». Эти рекомендации нацелены на улучшение времени отклика по HTTP и недопущения перегрузок сети. Если конвейерная обработка HTTP реализована правильно, дополнительные соединения не улучшат производительность, но могут привести к перегрузке сети.[7]

Недостатки

Если клиент не закрывает соединение после того, как получил все необходимые данные, задействованные на поддержание соединения ресурсы сервера будут недоступны другим клиентам. Насколько сильно это влияет на доступность сервера, и как долго ресурсы будут заняты, зависит от архитектуры и конфигурации сервера.

Использование в веб-браузерах

Диаграмма обычных и постоянных соединений.

Все современные браузеры используют постоянные соединения, включая Google Chrome, Firefox, Internet Explorer (с версии 4.01), Opera (с версии 4.0)[8] и Safari.

По умолчанию Internet Explorer версий 6 и 7 открывает 2 постоянных соединения, тогда как 8 версия — 6.[9] Постоянные соединения закрываются после 60 секунд простоя, что переопределяется в реестре Windows.[10]

В Firefox количество одновременных подключений можно настроить (на сервер, на прокси, всего). Постоянные соединения закрываются после 115 секунд (около 2 минут) простоя, что настраивается в конфигурации.[11]

Примечания

  1. Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, Persistence
  2. Apache HTTP Server 1.3 — KeepAliveTimeout Directive
  3. Apache HTTP Server 2.0 — KeepAliveTimeout Directive
  4. Apache HTTP Server 2.2 — KeepAliveTimeout Directive
  5. Apache HTTP Server 2.4 — KeepAliveTimeout Directive
  6. Multiple (wiki). Httpd/KeepAlive. Docforge. Проверено 30 января 2010. Архивировано 31 октября 2012 года.
  7. Nielssen, Frystyk Henryk; Gettys, James; Baird-Smith, Anselm & Prud’hommeaux, Eric (October 1997), "Network Performance Effects of HTTP/1.1, CSS1, and PNG", Computer Communication Review Т. 27 (4), ISSN 0146-4833, <http://conferences.sigcomm.org/sigcomm/1997/papers/p102.html>
  8. Opera 4.0 Upgrades File Exchange: Includes HTTP 1.1. Opera Software (28 марта 2000). Проверено 8 июля 2009.
  9. IE8 speeds things up. Stevesouders.com (10 марта 2008). Проверено 17 июля 2009.
  10. How to change the default keep-alive time-out value in Internet Explorer. Microsoft (27 октября 2007). Проверено 17 июля 2009.
  11. Network.http.keep-alive.timeout. Mozillazine.org. Проверено 17 июля 2009.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии