A Brotli egy új tömörítési algoritmus, amelyet a Google fejlesztett ki. A kisebb tömörítési válaszméret jobb helyhasználatot és gyorsabb oldalbetöltést tesz lehetővé. Sok esetben a Brotli felülmúlja a gzipet. Előnyök: Tipikus webes eszközök, mint a css, html, js esetében a Brotli 17-25%-kal felülmúlja a gzip-et. Brotli -11 sűrűség a gzip-9-hez képest: html (többnyelvű korpusz): 25% js mentés (az Alexa legmagasabb 10k-ja): 17% megtakarítás a zsugorítás js-ből (Alexa top 10k): 17% css mentése (Alexa top 10k): 20% megtakarítás.
Bevezetés a Brotli algoritmushoz
A Brotli eredetileg 2015-ben jelent meg webbetűtípusok offline tömörítésére. A Google szoftvermérnökei 2015 szeptemberében kiadtak egy továbbfejlesztett Brotli verziót, különös hangsúlyt fektetve a HTTP tömörítésre. Az enkódert részben átírták a tömörítési arány javítása érdekében, mind a kódolót, mind a dekódert gyorsabb növelték, és a streaming API-t is továbbfejlesztették, hogy több tömörítési minőséget adjon. Az új verzió teljesítményjavulást is mutat platformokon át, és csökkent memória szükséges a dekódoláshoz.
A gyakori általános célú tömörítési algoritmusokkal ellentétben Brotli előre definiált 120 kilobájtos szótárt használ. A szótár több mint 13 000 gyakran használt szót, kifejezést és egyéb alstringet tartalmaz egy nagy szöveg- és HTML dokumentumgyűjteményből. Az előre definiált algoritmusok növelhetik a kisebb fájlok tömörítési sűrűségét.
A szövegfájlok tömörítése helyett a Brotli használata általában 20%-kal növelheti a tömörítési sűrűséget, miközben a tömörítési és dekompressziós sebesség nagyjából ugyanaz. A Brotli alapú stream tömörítésre szolgáló tartalomkódolási típust a "br" használatával javasolták.
Brotli vs. Gzip
A tömörítési algoritmusok értékelésekor két mutatóra koncentrálunk: a kompressziói rátásra és a kompressziós sebességre. Ahogy a fenti ábrán is látható, bármelyik 9 tömörítési szint közül melyik gzip szintet használjuk, a tömörítési aránya alacsonyabb, mint a brotli-é (a gzip-hez képest 10-re is konfigurálható), és a tömörítési sebesség is lassabb.
Brotli előny: A Brotli 17-25%-kal felülmúlja a gzip-et a tipikus webes eszközöknél, mint a css, html, js. Brotli -11 sűrűség a gzip-9-hez képest: html (többnyelvű korpusz): 25% js mentés (az Alexa legmagasabb 10k-ja): 17% megtakarítás a zsugorítás js-ből (Alexa top 10k): mentés 17% css (Alexa top 10k): 20% megtakarítás
asp.net mag lehetővé teszi a Brotli használatát
Accept-Encoding fejléc érték
Kódkonfiguráció
Az alábbi kód bemutatja, hogyan lehet engedélyezni a reszponzor tömörítő middleware-t az alapértelmezett MIME típus és tömörítő szolgáltatók (Brotli és Gzip) számára:
Jegyzet:
- app. A UseResponseCompression funkciót az alkalmazásban kell tartalmazni. Használd Mvc-t hívás előtt.
- Használj olyan eszközöket, mint a Fiddler, Firebug vagy Postman, hogy beállítsd az Accept-Encoding kérésfejlécet, és tanulmányozd a válaszfejlést, méretét és törzsét.
Alapértelmezés szerint a Brotli tömörítő szolgáltató a tömör tömbjéhez csatlakozik a Gzip tömörítő szolgáltatóval együtt. Ha a kliens támogatja a Brotli tömörített adatformátumot, a tömörítés alapértelmezetten Brotli tömörítésre válik. Ha a kliens nem támogatja a Brotlit, akkor a tömörítés alapértelmezettben Gzip lesz, ha támogatja a Gzip tömörítést.
BR kompresszióteszt
Nyisd meg a Fiddler csomagrögzítő eszközt, és böngészővel elérd weboldalunk címét, a következőket láthatod:
Kérés fejléce: Accept-Encoding: gzip, deflate, br
Válaszfejléc: Tartalomkódolás: br
Tömörítés esetén a tartalomhossz fejléc eltávolításra kerül, mert a test tartalma megváltozik a válasz tömörítésekor.
Tömörítés esetén a Content-MD5 fejléc eltávolításra kerül, mert a törzstartalom megváltozott, és a hash már nem érvényes.
Amikor asp.net mag engedélyezi a https funkciót, a Brotli nem lép hatásra html és json tömörítésre, de képes tömöríteni a js és css fájlokat. (Lehetséges, hogy a karakterhossz túl kicsi ahhoz, hogy tömöríthető legyen, ezért be kell állítani)
(Vége)
|