Я смотрел спецификацию HTTP 1.1 и искал в части спецификации, относящейся к заголовку «Соединение». Я заметил, что для заголовка «Соединение» указан единственный токен «закрыть». Немного покопавшись, я обнаружил, что токен Keep-Alive, который находится в заголовке Connection во многих реализациях сервера, включая Vim, использующий Apache 2.2.3, остался от HTTP 1.0. Учитывая широкое распространение HTTP 1.1, насколько ценным является добавление Keep-Alive и подобных токенов, унаследованных от HTTP 1.0?
HTTP-соединение: Keep-Alive
Ответы (1)
Некоторая ценность; зависит от конкретного использования.
В HTTP 1.1 все соединения считаются постоянными, если не указано иное.
На практике реализации делают то, что хотят:
Когда клиент отправляет другой запрос [после HTTP-соединения: Keep-Alive], он использует то же соединение. Это будет продолжаться до тех пор, пока клиент или сервер не решат, что диалог окончен, и один из них не разорвет соединение.
Таким образом, разработчики клиентов и серверов действительно должны определять, как долго они будут поддерживать TCP-соединение открытым. Например,
Тайм-аут соединения по умолчанию для Apache 2.0 httpd [2] составляет всего 15 секунд [3], а для Apache 2.2 - всего 5 секунд.
Похоже, SPDY ляжет в основу будущего HTTP 2.0. Это кардинально меняет обработку соединения.
Источники:
http://en.wikipedia.org/wiki/HTTP_persistent_connection#HTTP_1.1
http://en.wikipedia.org/wiki/SPDY
http://en.wikipedia.org/wiki/HTTP_2.0
http://tools.ietf.org/html/draft-ietf-httpbis-http2-08