Brotli ist ein neuer Kompressionsalgorithmus, der von Google entwickelt wurde. Die kleinere Kompressionsantwortgröße ermöglicht eine bessere Speicherplatznutzung und schnellere Seitenlade. In vielen Fällen übertrifft Brotli gzip. Vorteile: Für typische Web-Assets wie CSS, HTML, JS übertrifft Brotli gzip um 17–25 %. Brotli -11 Dichte im Vergleich zu gzip-9: html (mehrsprachiges Korpus): 25 % von js sparen (Alexas höchste 10k): 17 % der schrumpfenden js sparen (Alexas Top 10k): 17 % von CSS sparen (Alexas Top 10k): 20 % Einsparungen.
Einführung in den Brotli-Algorithmus
Brotli wurde ursprünglich 2015 für die Offline-Kompression von Webschriften veröffentlicht. Google-Softwareingenieure veröffentlichten im September 2015 eine erweiterte Version von Brotli mit besonderem Fokus auf HTTP-Kompression. Der Encoder wurde teilweise neu geschrieben, um das Kompressionsverhältnis zu verbessern, sowohl der Encoder als auch der Decoder wurden für die Geschwindigkeit erhöht, und die Streaming-API wurde verbessert, um mehr Kompressionsqualitätsstufen hinzuzufügen. Die neue Version zeigt außerdem Leistungsverbesserungen auf verschiedenen Plattformen und einen geringeren Speicherbedarf für das Dekodieren.
Im Gegensatz zu gängigen allgemeinen Kompressionsalgorithmen verwendet Brotli ein vordefiniertes 120-Kilobyte-Wörterbuch. Das Wörterbuch enthält über 13.000 häufig verwendete Wörter, Phrasen und andere Unterzeichenketten aus einem großen Korpus von Text- und HTML-Dokumenten. Vordefinierte Algorithmen können die Kompressionsdichte kleinerer Dateien erhöhen.
Die Verwendung von Brotli anstelle von Deflate zur Komprimierung von Textdateien kann die Kompressionsdichte in der Regel um 20 % erhöhen, während die Kompressions- und Dekompressionsgeschwindigkeit ungefähr gleich bleibt. Der Inhaltscodierungstyp für Stream-Kompression mit Brotli wurde vorgeschlagen, "br" zu verwenden.
Brotli vs. Gzip
Bei der Bewertung von Kompressionsalgorithmen konzentrieren wir uns auf zwei Indikatoren: Kompressionsrate und Kompressionsgeschwindigkeit. Wie Sie in der obigen Abbildung sehen können, ist unabhängig davon, welche der 9 Kompressionsstufen von gzip verwendet wird, das Kompressionsverhältnis niedriger als das von brotli (im Vergleich zu gzip kann es ebenfalls auf 10 konfiguriert werden), und die Kompressionsgeschwindigkeit ist zudem langsamer.
Brotli-Vorteil: Brotli übertrifft Gzip um 17–25 % bei typischen Web-Assets wie CSS, HTML, JS. Brotli -11 Dichte im Vergleich zu gzip-9: html (mehrsprachiges Korpus): 25 % von js sparen (Alexas höchste 10k): 17 % der schrumpfenden js sparen (Alexas Top 10k): 17 % von CSS sparen (Alexas Top 10k): 20 % Einsparungen
asp.net Kern ermöglicht Brotli
Accept-Encoding-Header-Wert
Codekonfiguration
Der folgende Code zeigt, wie man responsive Kompressions-Middleware für den Standard-MIME-Typ und Kompressionsanbieter (Brotli und Gzip) aktiviert:
Anmerkung:
- App. UseResponseCompression muss in der App enthalten sein. Nutze Mvc, bevor du anrufst.
- Verwenden Sie Werkzeuge wie Fiddler, Firebug oder Postman, um den Accept-Encoding-Request-Header einzurichten und den Antwortheader, die Größe und den Body zu untersuchen.
Standardmäßig wird der Brotli-Kompressionsanbieter zusammen mit dem Gzip-Kompressionsanbieter dem Array des Kompressionsanbieters hinzugefügt. Wenn der Client das komprimierte Brotli-Datenformat unterstützt, wird die Kompression standardmäßig auf Brotli-Kompression eingestellt. Wenn der Client Brotli nicht unterstützt, setzt die Kompression standardmäßig auf Gzip, wenn der Client Gzip-Kompression unterstützt.
BR-Kompressionstest
Öffnen Sie das Fiddler-Paketerfassungstool und nutzen Sie einen Browser, um auf die Adresse unserer Website zuzugreifen; Sie können Folgendes sehen:
Anfrage-Header: Accept-Encoding: gzip, deflate, br
Antwort-Header: Content-Encoding: br
Bei der Kompression wird der Content-Length-Header entfernt, da sich der Inhaltstext ändert, wenn die Antwort komprimiert wird.
Wenn Kompression durchgeführt wird, wird der Content-MD5-Header entfernt, weil sich der Inhaltstext geändert hat und der Hash nicht mehr gültig ist.
Wenn asp.net Core die HTTPS-Funktion aktiviert, wirkt sich Brotli nicht auf die HTML- und JSON-Kompression aus, aber es kann JS und CSS komprimieren. (Es ist möglich, dass die Zeichenlänge zu klein ist, um komprimiert zu werden, und sie sollte gesetzt werden)
(Ende)
|