Conexiune HTTP persistentă

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 26 septembrie 2017; verificările necesită 11 modificări .

O conexiune HTTP persistentă  ( de exemplu, conexiune persistentă HTTP ), numită și reutilizare HTTP sau reutilizare a conexiunii HTTP  ( de exemplu, reutilizare a conexiunii HTTP ) - folosind o singură conexiune TCP pentru a trimite și primi mai multe solicitări și răspunsuri HTTP în loc de a deschide o nouă conexiune pentru fiecare pereche cerere-răspuns. Noul protocol HTTP/2 extinde această idee permițând mai multe cereri/răspunsuri simultane pe aceeași conexiune.

Funcționalitate

HTTP 1.0

Când lucrați prin HTTP 1.0 cu acest tip de conexiune, nu există nicio specificație oficială. De fapt, aceasta este o completare la protocolul existent. Dacă browserul acceptă conexiuni persistente, trimite un antet suplimentar în cerere:

Conexiune: Keep Alive

Apoi, când serverul primește o astfel de solicitare și generează un răspuns, se adaugă și la antetul răspunsului

Conexiune: Keep Alive

După aceea, conexiunea nu este întreruptă, ci rămâne deschisă. Când clientul trimite o altă solicitare, folosește aceeași conexiune. Acest lucru va continua până când clientul sau serverul decide că schimbul s-a încheiat și una dintre părți încheie conexiunea.

HTTP 1.1

Când rulează prin HTTP 1.1 , toate conexiunile sunt considerate persistente, dacă nu se specifică altfel. [1] Cu toate acestea, conexiunile persistente nu folosesc mesaje keepalive, ci pur și simplu permit trimiterea mai multor cereri pe aceeași conexiune. Cu toate acestea, timpul de expirare implicit httpd pentru Apache 1.3 [2] și 2.0 [3] este de numai 15 secunde, în timp ce pentru Apache 2.2 [4] și 2.4 [5] este de doar 5 secunde. Avantajul unui timeout scurt este că puteți servi rapid mai multe componente ale unei pagini web către client, fără a bloca procesele serverului sau firele de execuție pentru prea mult timp. [6]

Avantaje

Aceste avantaje sunt evidente în special pentru conexiunile HTTPS sigure , deoarece crearea unei conexiuni sigure necesită mai mult timp CPU și trafic de rețea între client și server.

Conform RFC 7230, secțiunea 6.4 , „clientul trebuie să limiteze numărul de conexiuni simultane la un anumit server”. Versiunea anterioară a specificației HTTP/1.1 a specificat valori maxime specifice , dar RFC 7230 „s-a dovedit a fi nepractic pentru multe aplicații... în schimb... fiți prudent când deschideți conexiuni concurente”. Aceste recomandări vizează îmbunătățirea timpilor de răspuns HTTP și evitarea congestionării rețelei. Dacă conducta HTTP este implementată corect, conexiunile suplimentare nu vor îmbunătăți performanța, dar pot duce la congestionarea rețelei. [7]

Dezavantaje

Dacă clientul nu închide conexiunea după ce a primit toate datele necesare, resursele serverului implicate în menținerea conexiunii nu vor fi disponibile altor clienți. Cât de mult afectează acest lucru disponibilitatea serverului și cât timp resursele vor fi ocupate, depinde de arhitectura și configurația serverului.

Utilizarea în browserele web

Toate browserele moderne folosesc conexiuni persistente, inclusiv Google Chrome , Firefox , Internet Explorer (din versiunea 4.01), Opera (din versiunea 4.0) [8] și Safari .

În mod implicit , versiunile 6 și 7 de Internet Explorer deschid 2 conexiuni persistente, în timp ce versiunea 8 deschide 6. [9] Conexiunile persistente sunt închise după 60 de secunde de inactivitate, care este suprascrisă în registrul Windows. [zece]

În Firefox , numărul de conexiuni simultane poate fi configurat (per server, per proxy, total). Conexiunile persistente sunt închise după 115 secunde (1,9166666666666666 minute) de timp inactiv, care este configurabil. [unsprezece]

Note

  1. Hypertext Transfer Protocol (HTTP/1.1): Sintaxa și rutarea mesajelor, Persistența . Consultat la 1 noiembrie 2015. Arhivat din original pe 14 decembrie 2016.
  2. Apache HTTP Server 1.3 - Directiva KeepAliveTimeout . Consultat la 1 noiembrie 2015. Arhivat din original la 26 octombrie 2015.
  3. Apache HTTP Server 2.0 - Directiva KeepAliveTimeout . Consultat la 1 noiembrie 2015. Arhivat din original la 31 octombrie 2015.
  4. Apache HTTP Server 2.2 - Directiva KeepAliveTimeout . Data accesului: 15 septembrie 2012. Arhivat din original pe 22 mai 2014.
  5. Apache HTTP Server 2.4 - Directiva KeepAliveTimeout . Consultat la 1 noiembrie 2015. Arhivat din original la 31 octombrie 2015.
  6. Multiple (wiki). Httpd/KeepAlive (link indisponibil) . Docforge . Data accesului: 30 ianuarie 2010. Arhivat din original la 30 octombrie 2012. 
  7. Nielssen, Frystyk Henryk; Gettys, James; Baird-Smith, Anselm & Prud'hommeaux, Eric (octombrie 1997), Network Performance Effects of HTTP/1.1, CSS1, and PNG , Computer Communication Review Vol . 27 (4), ISSN 0146-4833 , < http://conferences .sigcomm.org/sigcomm/1997/papers/p102.html > Arhivat 17 februarie 2011 la Wayback Machine 
  8. Opera 4.0 Upgrade Schimb de fișiere: Include HTTP 1.1 (downlink) . Opera Software (28 martie 2000). Consultat la 8 iulie 2009. Arhivat din original la 10 septembrie 2010. 
  9. IE8 accelerează lucrurile . Stevesouders.com (10 martie 2008). Consultat la 17 iulie 2009. Arhivat din original la 10 august 2009.
  10. Cum se modifică valoarea implicită de expirare a menținerii în viață în Internet Explorer . Microsoft (27 octombrie 2007). Consultat la 17 iulie 2009. Arhivat din original pe 22 iulie 2009.
  11. Network.http.keep-alive.timeout . Mozillazine.org. Consultat la 17 iulie 2009. Arhivat din original la 8 iunie 2009.

Link -uri