Brotli je nový kompresní algoritmus vyvinutý společností Google. Menší velikost kompresní odezvy umožňuje lepší využití místa a rychlejší načítání stránky. V mnoha případech Brotli překonává gzip. Výhody: U typických webových assetů jako css, html, js, Brotli překonává gzip o 17-25 %. Hustota brotli -11 ve srovnání s gzip-9: html (vícejazyčný korpus): ušetřete 25 % js (nejvyšší 10 tisíc v Alexe): ušetřete 17 % zmenšujících se JS (top 10 tisíc Alexy): ušetřete 17 % CSS (top 10 tisíc Alexy): 20 % úspor.
Úvod do algoritmu Brotli
Brotli byl původně vydán v roce 2015 pro offline kompresi webových fontů. Softwaroví inženýři Google vydali v září 2015 vylepšenou verzi Brotli se zvláštním zaměřením na kompresi HTTP. Enkodér byl částečně přepsán pro zlepšení kompresního poměru, jak enkodér, tak dekodér byly zvýšeny pro rychlost a streamovací API bylo vylepšeno pro zvýšení úrovně komprese. Nová verze také ukazuje zlepšení výkonu napříč platformami a sníženou paměť potřebnou pro dekódování.
Na rozdíl od běžných obecných kompresních algoritmů používá Brotli předdefinovaný slovník o velikosti 120 kilobajtů. Slovník obsahuje přes 13 000 běžně používaných slov, frází a dalších podřetězců z rozsáhlého korpusu textových a HTML dokumentů. Předdefinované algoritmy mohou zvýšit hustotu komprese menších souborů.
Použití brotli místo deflatace pro kompresi textových souborů obvykle zvyšuje hustotu komprese o 20 %, zatímco rychlost komprese a dekomprese je přibližně stejná. Typ kódování obsahu pro kompresi proudu pomocí Brotli byl navržen s použitím "br".
Brotli vs. Gzip
Při hodnocení kompresních algoritmů se zaměřujeme na dva ukazatele: rychlost komprese a rychlost komprese. Jak je vidět na obrázku výše, bez ohledu na to, která z 9 úrovní komprese gzip je použita, jeho kompresní poměr je nižší než u brotlího (ve srovnání s gzip lze také nastavit na 10) a rychlost komprese je také pomalejší.
Výhoda brotli: Brotli překonává gzip o 17–25 % u běžných webových assetů jako css, html, js. Hustota brotli -11 ve srovnání s gzip-9: html (vícejazyčný korpus): ušetřete 25 % js (nejvyšší 10k od Alexy): ušetřete 17 % zmenšujících se JS (top 10k Alexy): ušetřete 17 % CSS (top 10k Alexy): 20 % úspor
asp.net jádro umožňuje Brotli
Hodnota hlavičky Accept-Encoding
Konfigurace kódu
Následující kód ukazuje, jak povolit responzivní kompresní middleware pro výchozí MIME typ a poskytovatele komprese (Brotli a Gzip):
Poznámka:
- aplikace. UseResponseCompression musí být v aplikaci zahrnut. Použijte Mvc před zavoláním.
- Použijte nástroje jako Fiddler, Firebug nebo Postman k nastavení hlavičky požadavku Accept-Encoding a prostudujte hlavičku odpovědi, velikost a tělo.
Ve výchozím nastavení je poskytovatel komprese Brotli přidán do pole poskytovatele komprese spolu s poskytovatelem komprese Gzip. Když klient podporuje formát komprimovaných dat Brotli, komprese se automaticky převede na kompresi Brotli. Pokud klient Brotli nepodporuje, komprese se při podpoře Gzip komprese automaticky nastaví na Gzip.
BR kompresní test
Otevřete nástroj Fiddler pro zachycení paketů a použijte prohlížeč k přístupu na adresu našeho webu, kde můžete vidět následující:
Záhlaví požadavku: Accept-Encoding: gzip, deflate, br
Odpověď hlavička: Content-Encoding: br
Při kompresi je záhlaví Content-Length odstraněno, protože se obsah těla změní při kompresi odpovědi.
Při provedení komprese je hlavička Content-MD5 odstraněna, protože se změnil obsah těla a hash již není platný.
Když asp.net core zapne https funkci, Brotli se neprojeví při kompresi html a json, ale může komprimovat js a css. (Je možné, že délka znaku je příliš malá na to, aby byla zkomprimována, a měla by být nastavena)
(Konec)
|