Меня попросили создать сайт, и один из соразработчиков сказал мне, что мне нужно включить заголовок keep-alive.
Я много читал об этом, но у меня остались вопросы.
Открытое соединение повышает производительность, когда клиент делает несколько запросов на содержимое веб-страницы, поскольку сервер может быстрее возвращать содержимое для каждого запроса. В противном случае сервер должен открывать новое соединение для каждого запроса.
Смотря на
- Когда МПМ (F) посылает
keep alive
заголовок ( или пользователь отправляет поддержания активности ), это означает , что (E
,C
,B
) , кроме соединения , который предназначен только для моей сессии? - Где хранится эта информация ( «это соединение принадлежит« Ройи » )?
- Означает ли это, что никто другой не может использовать это соединение
- Если да - значит ли это, что keep alive-header - уменьшить количество пользователей с перекрывающимся подключением?
- если да, то как долго сохраняется соединение со мной? (другими словами, если я установлю keep alive - «держать» до какого момента?)
ps для интересующихся:
нажатие на эту страницу-образец вернет заголовок keep alive
http
http-headers
keep-alive
Ройи Намир
источник
источник
Ответы:
TCP-соединение распознается по исходному IP-адресу и порту, а также по IP-адресу и порту назначения. Ваша ОС, все промежуточные устройства, поддерживающие сеанс, и ОС сервера распознают это соединение.
HTTP работает с запросом-ответом: клиент подключается к серверу, выполняет запрос и получает ответ. Без поддержки активности соединение с HTTP-сервером закрывается после каждого ответа. С HTTP keep-alive вы держите базовое TCP-соединение открытым до тех пор, пока не будут выполнены определенные критерии.
Это позволяет использовать несколько пар запрос-ответ по одному TCP-соединению, устраняя некоторые из относительно медленных запусков TCP-соединения.
Нет. Маршрутизаторам не нужно запоминать сеансы. Фактически, несколько пакетов TCP, принадлежащих к одному сеансу TCP, не обязательно должны проходить через одни и те же маршрутизаторы - это необходимо для управления TCP. Маршрутизаторы просто выбирают лучший IP-путь и пересылают пакеты. Keep-alive используется только для клиента, сервера и любых других промежуточных устройств, поддерживающих сеанс.
Это предназначение TCP-соединений : это сквозное соединение, предназначенное только для этих двух сторон.
Определите «перекрывающиеся соединения». См. Постоянное соединение HTTP, чтобы узнать о некоторых преимуществах и недостатках, например:
Типичный ответ keep-alive выглядит так:
См., Например, заголовок Keep-Alive протокола передачи гипертекста (HTTP) (черновик для HTTP / 2, где заголовок keep-alive объяснен более подробно, чем 2616 и 2086 ):
Хост устанавливает значение
timeout
параметра равным времени, в течение которого хост позволяет незанятому соединению оставаться открытым, прежде чем оно будет закрыто. Соединение бездействует, если хост не отправляет и не принимает данные.max
Параметр указывает максимальное количество запросов , которые клиент будет делать, или что сервер позволит сделать на постоянной связи. После отправки указанного количества запросов и ответов хост, включивший параметр, может закрыть соединение.Однако сервер может закрыть соединение после произвольного времени или количества запросов (до тех пор, пока он возвращает ответ на текущий запрос). Как это реализовано, зависит от вашего HTTP-сервера.
источник
N
запросы черезN
соединения (поскольку по умолчанию соединение закрывается после каждого ответа), например, запускатьN
запросы поверхN / M
или даже простоM
соединения, потому что он может запускать несколько запросов поверх каждое открытое соединение, поэтому можно использовать меньше.