HTTP упорна конекција
HTTP упорна конекција, такође се зове HTTP одржавање (engl. keep-alive), или Поновно коришћење HTTP конекције, је идеја коришћења једне TCP конекције за слање и примање више HTTP захтева и одговора, супротно отварању нове конекције за сваки појединачан пар захтева и одговора.
HTTP 1.0
[уреди | уреди извор]Под HTTP 1.0, не постоји стандард како HTTP одржавање функционише. Суштински је додавано постојећем протоколу. Ако клијент подржава HTTP одржавање, он додаје заглавље захтеву:
- Connection: Keep-Alive
Онда, када сервер прими овај захтев и генерише одговор, такође додаје залгавље у тај одговор:
- Connection: Keep-Alive
Пратећи ово, конекција није прекинута, уместо тога је задржана. Када клијент пошаље још један захтев користи исту конекцију. Ово ће се наставити док клијент или сервер не одлучи да прекине комуникацију, и један од њих затвори конекцију.
HTTP 1.1
[уреди | уреди извор]У HTTP 1.1, све конекције се сматрају упорним ако се не наведе супротно.[1] HTTP упорне конекције не користе одвојене одржавајуће поруке, оне само допуштају да више захтева користи једну конекцију. Какогод, нормални тајмаут Apache 2.0 сервера 15 а Apache 2.2 свега 5 секунди.[2] Предност кратког трајања је способност да се брзо достави више компоненти веб странице док се не користи превише ресурса за покретање више серверских процеса или нити предуго.[3]
Предности
[уреди | уреди извор]- Мање коришћење процесора и меморије. (због мање симултано отворених конекција).
- Смањена закрченост мреже.
- Омогућава HTTP pipelining захтева и одговора.
- Смањено кашњење у наредним захтевима.
- Грешке могу бити пријављене без казне од затварања TCP конекције.
По RFC 2616 (стран 46), клијент за једног корисника не би требало да одржава више од 2 са било којим сервером или проксијем. Прокси би требало да користи 2×N конекција ка другом серверу или проксију, где N представља број истовремено активних корисника. Ове смернице имају за циљ да побољшају HTTP време одзива и избегну загушења. Ако је HTTP pipelining коректно имплементиран, нема добитка перформанси од додатних конекција, а додатне конекције могу да изазову проблеме загушења.[4]
Мане
[уреди | уреди извор]Предложено је да са модерном распрострањеном мрежом са високим пропусним опсегом, и малим кашњењем везе, одржавање не би било корисно као што је некада било. Веб сервер ће држати отворену конекцију одређен број секунди (стандардно 5 код сервера Apache 2.2), и може да више умањи перформансе него што би их повећао.[5]
Одржавање HTTP конекције може изазвати неочекивано понашање ако је клијент подешен да користи прокси. Ако клијент успостави упорну конекцију на прокси, он онда може да шаље HTTP захтеве различитим домаћинима преко исте везе.
Употреба у веб прегледачима
[уреди | уреди извор]![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/HTTP_persistent_connection.svg/300px-HTTP_persistent_connection.svg.png)
Нетскејп навигатор и Интернет експлорер подржавају упорне конекције на веб серверима и проксију.
Нетскејп не затвара упорне конекције користећи временско ограничење. Све упорне конекције које мирују су на стању чекања. Када је потребно да се отвори нова упорна конекција на другом серверу, конекције у стању мировања се затварају од стране прегледача користећи неке видове LRU алгоритама.[6]
Интернет експлорер подржава упоредне везе. По стандарду, верзије 6 и 7 користе 2 упорне везе док верзија 8 користи 6.[7] Упорне конекције се завршавају након 60 секунди неактивности, што се може променити помоћу Виндоуз регистра.
Мозила фајерфокс подржава упорне конекције. Број симултаних конекција може бити измењен (по серверу, по проксију). УПорне конекције нестају након 115 секунди, што се може променити путем подешавања.[8]
Опера подржава упорне конекције од верзије 4.0. Број симултаних конекција може бити промењен.
Референце
[уреди | уреди извор]- ^ Persistent HTTP Connections in RFC [https://tools.ietf.org/html/rfc2616 2616 "Hypertext Transfer Protocol -- HTTP/1.1"]
- ^ Apache HTTP Server 2.2 - KeepAliveTimeout Directive
- ^ Multiple (wiki). „Httpd/KeepAlive”. Docforge. Архивирано из оригинала 06. 01. 2010. г. Приступљено 30. 1. 2010.
- ^ Nielssen, Henryk; Gettys, James; et. al. (17. 9. 1997), „Network Performance Effects of HTTP/1.1, CSS1, and PNG”, Computer Communication Review, 27 (4), ISSN 0146-4833
- ^ HTTP KeepAlive Considered Harmful, 23. 1. 2011, Архивирано из оригинала 26. 08. 2011. г., Приступљено 23. 9. 2011
- ^ Zhe Wang and Pei Cao (9. 12. 1998). „Persistent Connection Behavior of Popular Browsers”. University of Wisconsin-Madison. Приступљено 8. 7. 2009.
- ^ „IE8 speeds things up”. stevesouders.com. 10. 3. 2008. Приступљено 17. 7. 2009.
- ^ „Network.http.keep-alive.timeout”. mozillazine.org. Приступљено 17. 7. 2009.
Спољашње везе
[уреди | уреди извор]- RFC 2616 (HTTP/1.1), 8.1 Persistent Connections
- Persistent Connection Behavior of Popular Browsers (dated)
- Apache HTTPD Keep-Alive Support
- Network Performance Effects of HTTP/1.1, CSS1, and PNG