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.
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 AliveApoi, când serverul primește o astfel de solicitare și generează un răspuns, se adaugă și la antetul răspunsului
Conexiune: Keep AliveDupă 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.
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]
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]
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.
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]
http | |
---|---|
Concepte generale |
|
Metode | |
Titluri |
|
Codurile de stare |