Brotli is een nieuw compressie-algoritme ontwikkeld door Google. De kleinere compressieresponsgrootte zorgt voor een betere ruimtebenutting en sneller laden van pagina's. In veel gevallen presteert Brotli beter dan gzip. Voordelen: Voor typische webassets zoals css, html, js presteert Brotli met 17-25% beter dan gzip. Brotli -11 dichtheid vergeleken met gzip-9: html (meertalig corpus): bespaar 25% van js (Alexa's hoogste 10k): bespaar 17% van krimpende js (Alexa's top 10k): bespaar 17% van css (Alexa's top 10k): 20% besparing.
Inleiding tot het Brotli-algoritme
Brotli werd oorspronkelijk in 2015 uitgebracht voor offline compressie van weblettertypen. Google-softwareontwikkelaars brachten in september 2015 een verbeterde versie van Brotli uit, met speciale aandacht voor HTTP-compressie. De encoder is gedeeltelijk herschreven om de compressieverhouding te verbeteren, zowel de encoder als de decoder zijn verhoogd voor snelheid, en de streaming-API is verbeterd om meer niveaus van compressiekwaliteit toe te voegen. De nieuwe versie laat ook prestatieverbeteringen zien op verschillende platforms en minder geheugen dat nodig is voor decoderen.
In tegenstelling tot gangbare algemene compressie-algoritmen gebruikt Brotli een vooraf gedefinieerd woordenboek van 120 kilobyte. Het woordenboek bevat meer dan 13.000 veelgebruikte woorden, uitdrukkingen en andere substrings uit een groot corpus van tekst- en HTML-documenten. Vooraf gedefinieerde algoritmen kunnen de compressiedichtheid van kleinere bestanden verhogen.
Het gebruik van Brotli in plaats van deflate om tekstbestanden te comprimeren kan meestal de compressiedichtheid met 20% verhogen, terwijl de compressie- en decompressiesnelheid ongeveer gelijk is. Het contentcoderingstype voor streamcompressie met Brotli is voorgesteld om "br" te gebruiken.
Brotli vs. Gzip
Bij het evalueren van compressie-algoritmen richten we ons op twee indicatoren: compressiesnelheid en compressiesnelheid. Zoals je in de bovenstaande figuur kunt zien, ongeacht welke van de 9 compressieniveaus van gzip wordt gebruikt, is de compressieverhouding lager dan die van brotli (vergeleken met gzip kan het ook worden ingesteld op 10), en de compressiesnelheid is ook langzamer.
Brotli Voordeel: Brotli presteert 17-25% beter dan gzip voor typische webassets zoals css, html, js. Brotli -11 dichtheid vergeleken met gzip-9: html (meertalig corpus): bespaar 25% van js (Alexa's hoogste 10k): bespaar 17% van krimpende js (Alexa's top 10k): bespaar 17% van css (Alexa's top 10k): 20% besparing
asp.net kern maakt Brotli mogelijk
Accept-Encoding headerwaarde
Codeconfiguratie
De volgende code laat zien hoe responsieve compressiemiddleware voor het standaard MIME-type en compressieproviders (Brotli en Gzip) mogelijk wordt ingeschakeld:
Notitie:
- app. UseResponseCompression moet in de app zijn opgenomen. Gebruik Mvc voordat je belt.
- Gebruik tools zoals Fiddler, Firebug of Postman om de Accept-Encoding requestheader in te stellen en de responsheader, grootte en body te bestuderen.
Standaard wordt de Brotli-compressieprovider toegevoegd aan de array van de compressieprovider, samen met de Gzip-compressieprovider. Wanneer de client het Brotli-gecomprimeerde dataformaat ondersteunt, staat de compressie standaard op Brotli-compressie. Als de client geen Brotli ondersteunt, staat de compressie standaard op Gzip wanneer de client Gzip-compressie ondersteunt.
BR-compressietest
Open de Fiddler-pakketregistratietool en gebruik een browser om het adres van onze website te bekijken, je kunt het volgende zien:
Verzoekheader: Accept-Encoding: gzip, deflate, br
Responsheader: Content-Encoding: br
Wanneer compressie wordt uitgevoerd, wordt de Content-Length-header verwijderd omdat de inhoud van de inhoud verandert wanneer de respons wordt gecomprimeerd.
Wanneer compressie wordt uitgevoerd, wordt de Content-MD5-header verwijderd omdat de inhoud van de inhoud is veranderd en de hash niet langer geldig is.
Wanneer asp.net core de https-functie inschakelt, heeft Brotli geen effect op html- en jsoncompressie, maar het kan wel js en css comprimeren. (Het is mogelijk dat de tekenlengte te klein is om gecomprimeerd te worden, en dat deze moet worden ingesteld)
(Einde)
|