Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9827|Răspunde: 0

Codarea de transfer a protocolului HTTP (fragmentată)

[Copiază linkul]
Postat pe 24.09.2019 18:07:57 | | | |
1. Context:

  • Probleme persistente de conexiune: Pentru conexiuni nepersistente, browserul poate defini limitele entității care solicită sau răspunde în funcție de faptul dacă conexiunea este întreruptă sau nu; Pentru conexiuni continue, această abordare evident nu funcționează. Uneori, chiar dacă am trimis toate datele, browserul nu știe dacă vor veni date noi pe conexiunea deschisă, așa că pur și simplu așteaptă.
  • Rezolvați cu lungimea conținutului: Calculați lungimea entității și spuneți celeilalte părți prin cap. Browserul poate spune că entitatea de răspuns este deasupra prin lungimea informațiilor de lungime a conținutului
  • Problemă nouă cu lungimea conținutului: Deoarece câmpul Lungimea conținutului trebuie să reflecte cu adevărat lungimea entității, lungimea este necunoscută pentru conținutul generat dinamic până când conținutul este creat. În acest moment, pentru a obține lungimea corectă, poți deschide doar un buffer suficient de mare și să aștepți ca tot conținutul să fie generat înainte de a calcula. Totuși, acest lucru necesită mai multă suprasolicitare a memoriei pe de o parte, iar pe de altă parte, va face clientul să aștepte mai mult.
  • Avem nevoie de un mecanism nou care să nu se bazeze pe lungimea antetului și să cunoască granițele entităților - Transfer-Encoding: chunked.

2. Codificare prin transfer (fragmentată)

  • Transfer-Encoding este un câmp HTTP header (response header field), care înseamnă literal "transfer encoding". Cea mai recentă specificație HTTP definește un singur tip de transport de codificare: fragmentat.
  • Codificarea prin transfer fragmentat este un mecanism de transfer de date din Protocolul de Transfer Hipertext (HTTP) care permite ca datele HTTP trimise de un server web către client să fie împărțite în mai multe părți. Codificarea prin transport pe blocuri este disponibilă doar în versiunea 1.1 a protocolului HTTP (HTTP/1.1).
  • Datele sunt împărțite într-o serie de bucăți și trimise în unul sau mai multe bucăți, astfel încât serverul să poată trimite date fără să știe dinainte dimensiunea totală a conținutului trimis.


Metode specifice

  • După adăugarea Transfer-Encoding: chunked la antet, înseamnă că pachetul este chunked. În acest caz, entitățile din pachet trebuie transmise într-o serie de bucăți.
  • Fiecare chunk conține valoarea lungimii hexazecimale și datele, iar valoarea de lungime este exclusivă unei singure linii, iar lungimea nu include CRLF-ul de la finalul acesteia, nici CRLF-ul de la finalul datelor fragmentate.
  • Ultima valoare a lungimii chunk-ului trebuie să fie 0, iar datele chunk-ului corespunzătoare nu au conținut, indicând sfârșitul entității.




asp.net Cod de bază al testului:







Precedent:Lungimea conținutului protocolului Http
Următor:Trei factori care mă fac să renunț la Chrome
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com