Какво е Keep-Alive?

Keep-Alive (наричана още HTTP persistent connection или HTTP keep-alive) е настройка към уеб сървъра, чрез която може да се зададе типа на връзката между уеб сървър и уеб браузър.

🚀 При СуперХостинг.БГ всички хостинг и Managed VPS планове се предлагат с по-новия и по-добър протокол – HTTP/2.

Keep-Alive се поддържа на всички сървъри при СуперХостинг.БГ за клиентите, които все още използват по-старата версия на протокола HTTP/1.1.

Когато се достъпва даден уеб сайт, уеб браузърът осъществява връзка с уеб сървъра през интернет с помощта на мрежови протоколи (TCP/IP). Всяка TCP мрежова връзка представлява комуникационен канал, по който уеб браузър и уеб сървър си разменят HTTP заявки и HTTP отговори.

Стандартно дадена уеб страница е съвкупност от множество отделни ресурси като изображения (.jpg,.png …), стил (.css), интерактивност (.js …) документи (.doc, .pdf …), мултимедия (.flv, .mp3) и други.

Тези обекти са отделни от самия HTML код на уеб страницата и дори не е задължително да се намират на същия сървър. Реално в HTML кода са поставени само указатели, чрез които тези ресурси се извикват. След като получи HTML кодът на уеб страницата, уеб браузърът разчита указателите и изпраща към уеб сървъра по една HTTP заявка за всеки отделен ресурс.

Когато не се ползва Keep-Alive, за всяка отделна HTTP заявка ще бъде създаден отделен комуникационен канал (TCP връзка) между уеб сървъра и уеб браузъра. След като уеб сървърът предостави HTTP отговор на HTTP заявката, връзката се прекратява. При следваща заявка от уеб браузъра, уеб сървърът ще отвори нов комуникационен канал. Към времето за зареждане на уеб страницата се прибавя и времето за създаване и прекратяване на всяка TCP връзка. Когато обектите са повече, това значително забавя окончателното зареждане на уеб страницата.

Когато се ползва Keep-Alive, комуникационният канал (TCP връзката) между уеб браузър и уеб сървър не се прекратява след само една HTTP заявка/отговор. Вместо това, връзката остава отворена и по нея се предават множество HTTP заявки/отговори. Връзката се прекратява, когато няма повече заявки от уеб браузъра.

С постоянния комуникационен канал уеб браузърът може да изиска множество ресурси от сървъра и да ги получи по същия този канал. Това елиминира допълнителното време, което се изразходва за създаването и прекратяването на множество връзки с уеб сървъра, и зареждането на уеб страниците е значително по-бързо.

Във версия 1.1 на протокола HTTP Keep-Alive е описан като метод по подразбиране за връзката между уеб сървър и уеб браузър.

Информация за метода на връзката се подава в заглавната част на HTTP заявката и HTTP отговора.

Примерна HTTP заявка и HTTP отговор:

HTTP заявка от уеб браузъра:

GET / HTTP/1.1
Host: help.superhosting.bg
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: bg,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

HTTP отговор от уеб сървъра:

HTTP/1.1 200 OK
Date: Mon, 19 Jan 2015 12:14:41 GMT
Server: Apache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=5
Content-Type: text/html; charset=UTF-8

В настройките на уеб сървъра за Keep-Alive могат да се зададат два параметъра:

  • timeout – след колко време на неактивност по комуникационния канал, да се прекрати връзката; в секунди; ако по канала не се получи нова HTTP заявка, връзката се прекратява;
  • max – максимален брой заявки, които могат да се подадат по един комуникационен канал.

Прекратяване на връзката може да се задейства или от уеб браузъра или уеб сървъра, като в заглавните части на последната заявка/отговор се подаде Connection: close.

За да проверите дали Keep-Alive е активиран на уеб сървъра, погледнете HTTP заглавните части на негов HTTP отговор.

HTTP заглавните части, изпратени от уеб сървъра, можете да видите или през уеб браузър, с помощта на инструмент за разработчици или през онлайн инструмент като:
https://www.dnsqueries.com/en/googlebot_simulator.php
(в полето WebPage въведете адреса на уеб сайта)
Keep-Alive е активиран, ако в HTTP отговора се съдържа Connection: Keep-Alive.

Обновена: 22.04.2022
Беше ли Ви полезна тази статия?

Вижте още