HTTP uporna konekcija

S Vikipedije, slobodne enciklopedije

HTTP uporna konekcija, takođe se zove HTTP održavanje (engl. keep-alive), ili Ponovno korišćenje HTTP konekcije, je ideja korišćenja jedne TCP konekcije za slanje i primanje više HTTP zahteva i odgovora, suprotno otvaranju nove konekcije za svaki pojedinačan par zahteva i odgovora.

HTTP 1.0[uredi | uredi izvor]

Pod HTTP 1.0, ne postoji standard kako HTTP održavanje funkcioniše. Suštinski je dodavano postojećem protokolu. Ako klijent podržava HTTP održavanje, on dodaje zaglavlje zahtevu:

Connection: Keep-Alive

Onda, kada server primi ovaj zahtev i generiše odgovor, takođe dodaje zalgavlje u taj odgovor:

Connection: Keep-Alive

Prateći ovo, konekcija nije prekinuta, umesto toga je zadržana. Kada klijent pošalje još jedan zahtev koristi istu konekciju. Ovo će se nastaviti dok klijent ili server ne odluči da prekine komunikaciju, i jedan od njih zatvori konekciju.

HTTP 1.1[uredi | uredi izvor]

U HTTP 1.1, sve konekcije se smatraju upornim ako se ne navede suprotno.[1] HTTP uporne konekcije ne koriste odvojene održavajuće poruke, one samo dopuštaju da više zahteva koristi jednu konekciju. Kakogod, normalni tajmaut Apache 2.0 servera 15 a Apache 2.2 svega 5 sekundi.[2] Prednost kratkog trajanja je sposobnost da se brzo dostavi više komponenti veb stranice dok se ne koristi previše resursa za pokretanje više serverskih procesa ili niti predugo.[3]

Prednosti[uredi | uredi izvor]

  • Manje korišćenje procesora i memorije. (zbog manje simultano otvorenih konekcija).
  • Smanjena zakrčenost mreže.
  • Omogućava HTTP pipelining zahteva i odgovora.
  • Smanjeno kašnjenje u narednim zahtevima.
  • Greške mogu biti prijavljene bez kazne od zatvaranja TCP konekcije.

Po RFC 2616 (stran 46), klijent za jednog korisnika ne bi trebalo da održava više od 2 sa bilo kojim serverom ili proksijem. Proksi bi trebalo da koristi 2×N konekcija ka drugom serveru ili proksiju, gde N predstavlja broj istovremeno aktivnih korisnika. Ove smernice imaju za cilj da poboljšaju HTTP vreme odziva i izbegnu zagušenja. Ako je HTTP pipelining korektno implementiran, nema dobitka performansi od dodatnih konekcija, a dodatne konekcije mogu da izazovu probleme zagušenja.[4]

Mane[uredi | uredi izvor]

Predloženo je da sa modernom rasprostranjenom mrežom sa visokim propusnim opsegom, i malim kašnjenjem veze, održavanje ne bi bilo korisno kao što je nekada bilo. Veb server će držati otvorenu konekciju određen broj sekundi (standardno 5 kod servera Apache 2.2), i može da više umanji performanse nego što bi ih povećao.[5]

Održavanje HTTP konekcije može izazvati neočekivano ponašanje ako je klijent podešen da koristi proksi. Ako klijent uspostavi upornu konekciju na proksi, on onda može da šalje HTTP zahteve različitim domaćinima preko iste veze.

Upotreba u veb pregledačima[uredi | uredi izvor]

Uporedna šema višestruke i uporedne konekcije.

Netskejp navigator i Internet eksplorer podržavaju uporne konekcije na veb serverima i proksiju.

Netskejp ne zatvara uporne konekcije koristeći vremensko ograničenje. Sve uporne konekcije koje miruju su na stanju čekanja. Kada je potrebno da se otvori nova uporna konekcija na drugom serveru, konekcije u stanju mirovanja se zatvaraju od strane pregledača koristeći neke vidove LRU algoritama.[6]

Internet eksplorer podržava uporedne veze. Po standardu, verzije 6 i 7 koriste 2 uporne veze dok verzija 8 koristi 6.[7] Uporne konekcije se završavaju nakon 60 sekundi neaktivnosti, što se može promeniti pomoću Vindouz registra.

Mozila fajerfoks podržava uporne konekcije. Broj simultanih konekcija može biti izmenjen (po serveru, po proksiju). UPorne konekcije nestaju nakon 115 sekundi, što se može promeniti putem podešavanja.[8]

Opera podržava uporne konekcije od verzije 4.0. Broj simultanih konekcija može biti promenjen.

Reference[uredi | uredi izvor]

  1. ^ Persistent HTTP Connections in RFC [https://tools.ietf.org/html/rfc2616 2616 "Hypertext Transfer Protocol -- HTTP/1.1"]
  2. ^ Apache HTTP Server 2.2 - KeepAliveTimeout Directive
  3. ^ Multiple (wiki). „Httpd/KeepAlive”. Docforge. Arhivirano iz originala 06. 01. 2010. g. Pristupljeno 30. 1. 2010. 
  4. ^ 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 
  5. ^ HTTP KeepAlive Considered Harmful, 23. 1. 2011, Arhivirano iz originala 26. 08. 2011. g., Pristupljeno 23. 9. 2011 
  6. ^ Zhe Wang and Pei Cao (9. 12. 1998). „Persistent Connection Behavior of Popular Browsers”. University of Wisconsin-Madison. Pristupljeno 8. 7. 2009. 
  7. ^ „IE8 speeds things up”. stevesouders.com. 10. 3. 2008. Pristupljeno 17. 7. 2009. 
  8. ^ „Network.http.keep-alive.timeout”. mozillazine.org. Pristupljeno 17. 7. 2009. 

Spoljašnje veze[uredi | uredi izvor]