
Business Intelligence as a Service
Probeer PlusClouds Eaglet-dienst en vind hoogwaardige B2B warme leads en kansen met AI-ondersteuning.
Brotli is een door Google ontwikkeld verliesloos en open source compressie-algoritme. Aanvankelijk ontworpen om de grootte van webfonts te verkleinen, is Brotli tegenwoordig een algemeen toepasbaar compressieformaat geworden. Brotli biedt dezelfde snelheid bij decompressie en kleinere bestanden dan gzip en Deflate en fungeert als een alternatief.
Brotli is oorspronkelijk ontwikkeld om WOFF2 webfonts te comprimeren. Het is een voortzetting van Zopfli, een door Google ontwikkeld compressie-algoritme dat compatibel is met gzip, zlib en Deflate. Zowel Zopfli als Brotli hebben een veel hogere compressieverhouding dan gzip, zlib en Deflate, hoewel ze meer CPU gebruiken. Na verloop van tijd heeft Brotli, in ruil voor compatibiliteit, de overstap gemaakt naar zijn eigen bestandsformaat met de .br-extensie. Wat Brotli uniek maakt, is dat het alleen kan worden gebruikt met veilige verbindingen. Dit is te danken aan tussenpersonen (middleboxes) die onbeveiligd HTTP-verkeer stoppen en scannen. Het is gebleken dat sommige tussenpersonen die geconfronteerd worden met een Brotli-bestand, de Content-Encoding header omzetten van br naar gzip om het bestand door te geven. Door het gebruik van Brotli aan HTTP te koppelen, heeft Google deze interventie geëlimineerd en de snellere acceptatie van Brotli mogelijk gemaakt.
In vergelijking met Deflate biedt Brotli een aanzienlijk hogere compressieverhouding. Dit gaat echter ten koste van een veel hogere CPU-gebruik. Volgens een onderzoek van Google in 2015 is het maximale compressieniveau van Brotli 29% hoger dan dat van Deflate. Echter, op dit niveau is de compressie- en decompressiesnelheid van Brotli respectievelijk 97% en 17% lager dan die van Deflate (15.5 en 347.3 MB/s tegenover 0.5 en 289.5 MB/s).
Vanwege de aanzienlijk lagere snelheid van compressie geven bedrijven er de voorkeur aan bestanden vooraf te comprimeren wanneer ze Brotli gebruiken. In 2017 kon Dropbox de grootte van de statische inhoud op Dropbox.com gemiddeld met 20-25% verkleinen door over te schakelen naar Brotli. Aangezien de inhoud statisch is, kan Dropbox de gegevens in de voorbereidende fase vooraf comprimeren en deze direct aan gebruikers aanbieden.
Veel van de meest gebruikte webservers ondersteunen Brotli direct of via modules. Veel CDN (Content Delivery Networks) ondersteunen ook Brotli.
Net als gzip, zlib en Deflate biedt Brotli verschillende compressieniveaus aan. Hogere niveaus bieden over het algemeen hogere compressieverhouding maar met lagere snelheid. Niveau 1 is de traagste, terwijl niveau 11 de snelste is. Niveau 5, dat een goede balans biedt tussen snelheid en bestandsgrootte, wordt vooral aanbevolen voor degenen die op zoek zijn naar dynamische compressie.
Apache ondersteunt Brotli met de mod_brotli module die bij versie 2.4.26 is uitgebracht. Om Brotli in te schakelen, kunt u het volgende in uw virtuele adresconfiguratie invoeren:
Vraag compressie voor gangbare tekst-gebaseerde MIME-types aan
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript
Sla inhoud over die al is gecomprimeerd
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
Stel het compressieniveau in (standaard is 5)
BrotliCompressionQuality 6
mod_brotli opent gegevens met elke aanvraag. Om vooraf gecomprimeerde gegevens aan te bieden, kopieert u Brotli-bestanden naar een map met toegang vanaf Apache. Vervolgens voegt u een herschrijfvoorwaarde toe aan uw virtuele adresconfiguratie, die nu met deze bestanden werkt in plaats van gzip-tegenhangers.
Dien gecomprimeerde CSS-bestanden van Brotli aan als ze bestaan en de client Brotli accepteert.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.css" "$1\.css\.br" \.js" "$1\.js\.br" $">
Dien het juiste encodingtype aan.
Header append Content-Encoding br
Forceer proxies om brotli &
non-brotli css/js-bestanden afzonderlijk te cachen.
Header append Vary Accept-Encoding
Nginx ondersteunt Brotli met de ngx_brotli module. De module bestaat eigenlijk uit twee aparte modules. De ene voor on-the-fly (direct) compressie, de andere voor vooraf compressie. Om Brotli te gebruiken, moet Nginx en de opgegeven module worden gecompileerd.
brotli on; # Activeert on-the-fly compressie.
brotli_static on; # Activeert het serveren van vooraf gecomprimeerde bestanden.
brotli_types *; # Activeert compressie voor alle MIME-typen. text/html-antwoorden worden altijd gecomprimeerd.
brotli_comp_level 6; # Stelt het compressieniveau in (standaard is 6).
Het is mogelijk om Brotli te gebruiken op IIS met de open source "Brotli Compression Scheme Plugin" module. Het installatie-scripts voert de installatie en configuratie van Brotli automatisch uit voor alle ISS-sites. U kunt de compressie-instelling configureren door het bestand applicationHost.config te openen en naar het gedeelte
...
...
Op de datum waarop dit artikel is geschreven, zijn de enige beschikbare compressie-opties uitsluitend statische en dynamische compressie-niveaus.
Een groot aantal CDN's zoals Key CDN en Akamai ondersteunt Brotli expliciet. Echter, andere CDN's openen geen met Brotli gecomprimeerde bestanden en kunnen zelfs proberen om ze om te zetten naar gzip. Toen LinkedIn in 2017 Brotli door het hele site testte, werd geconstateerd dat vijf van hun CDN's de Accept-Encoding header terugzette naar gzip, zelfs wanneer Brotli-bestanden werden aangeboden. Bovendien waren de content servers van LinkedIn in de war omdat hun antwoorden de Content-Encoding: br header bevatten, waardoor de CDN's de gegevens niet konden cachen.
Om dit probleem op te lossen, heeft LinkedIn Brotli-bestanden naar een andere URL verplaatst en de Content-Encoding: br header verwijderd. Nadat het bestand door de CDN was gecached, werd de header bij elk antwoord aan de klant opnieuw toegevoegd. Hoewel dit het probleem niet volledig oplost, is er een verbetering van 2-6.5% in de prestaties gezien, vooral voor mobiele gebruikers.
Brotli wordt door de meeste moderne browsers ondersteund, met uitzondering van Internet Explorer 11 en Opera Mini. Google Chrome ondersteunt het vanaf versie 50, Firefox vanaf versie 44, Edge vanaf versie 15, Opera vanaf versie 38 en Safari begon te ondersteunen vanaf versie 11. Wereldwijd ondersteunt 84,25% van de browsers, in de VS is dat 83,42%, Brotli.
Echter, browsers die Brotli niet ondersteunen, zullen andere compressie-algoritmen gebruiken door in hun Accept-Encoding header geen verzoek om Brotli te doen.
Brotli heeft een nieuwe generatie benadering van gegevenscompressie en -opslag geïntroduceerd. Met de potentie om de grootte van websites met 20% te verkleinen, biedt Brotli de mogelijkheid tot een snellere en kleinere webervaring. U kunt meer informatie over Brotli vinden op de officiële GitHub pagina.
Als je een journalist bent die graag diep in onderwerpen duikt die betrekking hebben op bedrijven en sectoren, willen we graag met je samenwerken!
Met de AutoQuill-tool die PlusClouds is gaan aanbieden aan zijn affiliate partners, kunnen contentmakers met een enkele klik verkopen. Laat ons u laten zien hoe u uw aandeel in deze revolutie kunt krijgen.