Brotli este un nou algoritm de compresie dezvoltat de Google. Dimensiunea mai mică a răspunsului la compresie permite o utilizare mai bună a spațiului și încărcarea mai rapidă a paginilor. În multe cazuri, Brotli depășește gzip. Avantaje: Pentru active web tipice precum css, html, js, Brotli depășește gzip cu 17-25%. Densitatea Brotli -11 comparativ cu gzip-9: html (corpus multilingv): economisește 25% din js (cel mai mare 10k de la Alexa): salvează 17% din js micșorat (top 10k de la Alexa): salvează 17% din css (top 10k de la Alexa): economisire de 20%.
Introducere în algoritmul Brotli
Brotli a fost lansat inițial în 2015 pentru compresia offline a fonturilor web. Inginerii software Google au lansat o versiune îmbunătățită a Brotli în septembrie 2015, cu un accent special pe compresia HTTP. Encoderul a fost parțial rescris pentru a îmbunătăți raportul de compresie, atât encoderul, cât și decodorul au fost mărite pentru viteză, iar API-ul de streaming a fost îmbunătățit pentru a adăuga mai multe niveluri de calitate a compresiei. Noua versiune arată, de asemenea, îmbunătățiri de performanță pe toate platformele și o reducere a memoriei necesare pentru decodare.
Spre deosebire de algoritmii obișnuiți de compresie generală, Brotli folosește un dicționar predefinit de 120 de kilobyte. Dicționarul conține peste 13.000 de cuvinte, expresii și alte substringuri utilizate frecvent dintr-un corpus mare de texte și documente HTML. Algoritmi predefiniți pot crește densitatea compresiei fișierelor mai mici.
Folosirea Brotli în loc de dezumflare pentru a comprima fișierele text poate crește de obicei densitatea compresiei cu 20%, în timp ce viteza de compresie și decompresie este aproximativ aceeași. Tipul de codare a conținutului pentru compresia fluxului folosind Brotli a fost propus să folosească "br".
Brotli vs. Gzip
Când evaluăm algoritmii de compresie, ne concentrăm pe doi indicatori: rata de compresie și viteza de compresie. După cum puteți vedea în figura de mai sus, indiferent care dintre cele 9 niveluri de compresie ale gzip este folosită, raportul său de compresie este mai mic decât cel al brotli (comparativ cu gzip, poate fi configurat și la 10), iar viteza de compresie este de asemenea mai lentă.
Avantajul Brotli: Brotli depășește gzip cu 17-25% pentru active web tipice precum css, html, js. Densitatea Brotli -11 comparativ cu gzip-9: html (corpus multilingv): economisește 25% din js (cel mai mare 10k de la Alexa): salvează 17% din js micșorând (top 10k de la Alexa): salvează 17% din css (top 10k de la Alexa): 20% economii
asp.net de bază permite Brotli
Valoarea antetului Accept-Encoding
Configurarea codului
Următorul cod demonstrează cum să activezi middleware-ul de compresie responsive pentru tipul MIME implicit și furnizorii de compresie (Brotli și Gzip):
Notă:
- aplicație. UseResponseCompression trebuie inclus în aplicație. Folosește UseMvc înainte să suni.
- Folosește instrumente precum Fiddler, Firebug sau Postman pentru a configura antetul cererii Accept-Encoding și pentru a studia antetul, dimensiunea și corpul răspunsului.
În mod implicit, furnizorul de compresie Brotli este adăugat în array-ul furnizorului de compresie împreună cu furnizorul de compresie Gzip. Când clientul suportă formatul de date comprimate Brotli, compresia devine implicită compresia Brotli. Dacă clientul nu suportă Brotli, compresia devine implicită pe Gzip atunci când clientul suportă compresia Gzip.
Testul de compresie BR
Deschide instrumentul de captare a pachetelor Fiddler și folosește un browser pentru a accesa adresa site-ului nostru, poți vedea următoarele:
Antetul cererii: Accept-Encoding: gzip, deflate, br
Antet Răspuns: Conținut-Codificare: br
Când se efectuează compresia, antetul Content-Length este eliminat deoarece conținutul corpului se schimbă când răspunsul este comprimat.
Când se efectuează compresia, antetul Content-MD5 este eliminat deoarece conținutul corpului s-a schimbat și hash-ul nu mai este valabil.
Când nucleul asp.net activează funcția https, Brotli nu va avea efect asupra compresiei html și json, dar poate comprima js și css. (Este posibil ca lungimea caracterului să fie prea mică pentru a fi comprimată și să fie setată)
(Sfârșit)
|