Vorwort Um in Webanwendungen Datenverkehr zu sparen, die Größe der übertragenen Daten zu reduzieren und die Übertragungseffizienz zu verbessern, wird in der Regel gzip als Komprimierungsmethode verwendet. Heute stellen wir eine weitere, effizientere Komprimierungsmethode vor: brotli. Brotli basiert auf einer modernen Variante des LZ77-Algorithmus, Huffman-Kodierung und Kontextmodellierung zweiter Ordnung. Die Softwareentwickler von Google haben im September 2015 eine erweiterte Version von Brotli veröffentlicht, die eine allgemeine verlustfreie Datenkomprimierung umfasst und insbesondere auf die HTTP-Komprimierung ausgerichtet ist. Hinweis: Voraussetzung für die Verwendung des Algorithmus ist die Aktivierung von https, da Accept-Encoding: gzip, deflate im Anforderungsheader der http-Anforderung kein br enthält. Browserunterstützung für das Brotli-Protokoll Vergleich verschiedener Komprimierungsalgorithmen auf unterschiedlichen Ebenen Aus der Abbildung können wir erkennen, dass die Komprimierungsalgorithmen Brotli im Vergleich zu Gzip im Allgemeinen eine bessere Gesamtleistung aufweisen, insbesondere bei der Dekomprimierungsgeschwindigkeit. Wenn wir uns für den Brotli-Algorithmus oder Gzip entscheiden, müssen wir ihn entsprechend dem tatsächlichen Szenario anpassen. Brotli herunterladen google/ngx_brotli Seit der Version vom Dezember 2016 ist google/brotli integriert, sodass wir die Bibliothek bagder/libbrotli nicht separat kompilieren müssen, was die Installation vereinfacht. Wir laden google/ngx_brotli herunter und entpacken es in das Verzeichnis /usr/src/ngx_brotli
Laden Sie dann google/brotli herunter und entpacken Sie es nach /usr/src/ngx_brotli/deps/brotli
Brotli kompilieren Nginx unterstützt dynamische Module seit Version 1.9.11. Seitdem müssen Sie Nginx nicht mehr neu kompilieren, um Module zu Nginx hinzuzufügen. Mit dynamischen Modulen können Sie zur Laufzeit selektiv Drittanbietermodule oder offizielle Nginx-Module laden. Die neue Implementierung bleibt über das API-Modul so weit wie möglich abwärtskompatibel. Laden Sie das Nginx-Installationspaket herunter und entpacken Sie es Bitte laden Sie das Nginx-Installationspaket herunter, das mit der aktuellen Nginx-Version identisch ist. Die offizielle Download-Adresse von nginx lautet: http://nginx.org/en/download.html. Hierbei wird davon ausgegangen, dass der aktuelle Server nginx die Version 1.14.2 aufweist. Die aktuelle Nginx-Version können Sie über den Befehl nginx -v Ausgabe Nginx-Version: nginx/1.14.2 Laden Sie das Nginx-Installationspaket herunter
Entpacken Sie das Installationspaket tar -xvf nginx-1.14.2.tar.gz Kompilieren dynamischer Module Geben Sie zuerst das Verzeichnis des entpackten Nginx-Installationspakets ein, konfigurieren Sie es und verwenden Sie dann Make-Module.
Parametersyntax: --add-dynamic-module=[absoluter Pfad zum Verzeichnis, in dem sich der Quellcode des Moduls befindet] Überprüfen Sie nach Abschluss des Laufs das kompilierte Modul ls objs/*.so Ausgabe: objs/ngx_http_brotli_filter_module.so objs/ngx_http_brotli_static_module.so Kopieren Sie die kompilierte Moduldatei in das dynamische Modulladeverzeichnis von Nginx. cp objs/{ngx_http_brotli_filter_module.so,ngx_http_brotli_static_module.so} /etc/nginx/modules Registrieren von Brotli-Modulen Um die Verwaltung dynamischer Nginx-Module zu erleichtern, wird empfohlen, eine Datei „modules.conf“ zu erstellen, um dynamische Module separat zu verwalten. berühren Sie /etc/nginx/modules.conf Fügen Sie die Datei module.conf in die Konfigurationsdatei /etc/nginx/nginx.conf ein, suchen Sie den folgenden Inhalt und ändern Sie ihn:
Öffnen Sie /etc/nginx/modules.conf und registrieren Sie das gerade kompilierte Brotli-Modul.
Brotli-Komprimierung aktivieren Brotli und gzip können koexistieren, gzip muss nicht deaktiviert werden. Aktivieren Sie Brotli in /etc/nginx/nginx.conf: http { ... # gzip gzip an; gzip_min_länge 1k; gzip_puffer 4 32k; gzip_http_version 1.1; gzip_comp_level 5; gzip_types Text/Klartext/CSS-Anwendung/JSON-Anwendung/X-Javascript-Text/XML-Anwendung/XML-Anwendung/XML+RSS-Text/Javascript-Anwendung/Javascript; gzip_vary ein; gzip_proxied beliebig; gzip_disable "MSIE [1-6]\."; #brotli Brotli an; brotli_comp_level 6; brotli_puffer 16 8k; brotli_min_länge 20; brotli_types Text/Klartext/CSS-Anwendung/JSON-Anwendung/X-Javascript-Text/XML-Anwendung/Xml-Anwendung/Xml+RSS-Text/Javascript-Anwendung/Javascript-Bild/SVG+XML; ... } Konfigurationsdetails von gzip und brotli Gzip-Tuning: Durch die Verwendung der Gzip-Komprimierungsfunktion können wir Bandbreite sparen, die Übertragung beschleunigen, ein besseres Erlebnis bieten und Kosten sparen. Dies ist also ein wichtiger Punkt. Für eine ausführliche Einführung in gzip klicken Sie hier; gzip on aktiviert die Gzip-Komprimierung. gzip_min_länge 1k Legen Sie die Mindestanzahl an Bytes fest, die für komprimierte Seiten zulässig ist. Die Anzahl der Bytes für eine Seite wird aus dem Content-Length-Header abgerufen. Der Standardwert ist 0. Unabhängig davon, wie groß die Seite ist, wird sie komprimiert. Es wird empfohlen, den Wert größer als 1 KB festzulegen. Wenn er kleiner als 1 KB ist, kann die Seitengröße beim Komprimieren zunehmen. gzip_puffer Die Komprimierungspuffergröße gibt an, dass 4 Speichereinheiten mit 32 KB als Stream-Cache für das Komprimierungsergebnis verwendet werden. Der Standardwert ist, dass zum Speichern des GZIP-Komprimierungsergebnisses der gleiche Speicherplatz wie die ursprüngliche Datengröße verwendet wird. gzip_http_version 1.1 Die komprimierte Version wird verwendet, um die HTTP-Protokollversion festzulegen. Der Standardwert ist 1.1. Derzeit unterstützen die meisten Browser bereits die GZIP-Dekomprimierung, sodass Sie den Standardwert verwenden können. gzip_comp_level 5 Mit dem Komprimierungsverhältnis wird das GZIP-Komprimierungsverhältnis angegeben. 1 bedeutet das kleinste Komprimierungsverhältnis und die schnellste Verarbeitungsgeschwindigkeit, während 9 das größte Komprimierungsverhältnis und die schnellste Übertragungsgeschwindigkeit, aber langsame Verarbeitung und höhere CPU-Auslastung bedeutet. Die empfohlene Einstellung ist 5. gzip_typen Wird verwendet, um den Komprimierungstyp anzugeben. Der Typ „Text/HTML“ wird immer komprimiert. gzip_vary auf Es hängt mit dem HTTP-Header zusammen. Für den Proxyserver wird ein Vary-Header hinzugefügt. Einige Browser unterstützen die Komprimierung, andere nicht. Um Datenverschwendung zu vermeiden, wird bei Browsern, die dies nicht unterstützen, eine Komprimierung durchgeführt. Ob eine Komprimierung erforderlich ist, wird daher anhand des HTTP-Headers des Clients bestimmt. gzip_proxied beliebig Aktiviert, wenn nginx als Reverse-Proxy verwendet wird. Schaltet die vom Backend-Server zurückgegebenen Ergebnisse ein oder aus. Voraussetzung für die Übereinstimmung ist, dass der Backend-Server einen Header zurückgeben muss, der Via enthält. Die Standardeinstellung ist „Aus“. Optionale Parameterwerte:
gzip_deaktivieren Deaktivieren Sie die GZIP-Komprimierung für IE6. Die Unterstützung von IE6 für die GZIP-Komprimierung ist sehr schlecht, was zum Einfrieren der Seite führen kann. Um Probleme mit IE6 zu vermeiden, wird empfohlen, diesen Parameter hinzuzufügen. Brotli-Tuning Google ist der Ansicht, dass die Zeit der Internetnutzer kostbar ist und nicht mit langen Ladezeiten von Webseiten verschwendet werden sollte. Daher hat Google im September 2015 den verlustfreien Komprimierungsalgorithmus Brotli eingeführt. Brotli komprimiert Daten durch eine Variante des LZ77-Algorithmus, Huffman-Kodierung und Textmodellierung zweiter Ordnung. Im Vergleich zu anderen Komprimierungsalgorithmen weist es eine höhere Komprimierungseffizienz auf. Für weitere Informationen zu Brotli klicken Sie bitte hier; Hinweis: Wenn das Brotli-Modul nicht installiert ist, muss dieser Teil der Konfigurationselemente nicht konfiguriert werden und kann übersprungen werden. Brotli auf Aktivieren Sie die Brotli-Komprimierung. brotli_comp_level 6 Komprimierungsverhältnis, wird verwendet, um das Brotli-Komprimierungsverhältnis anzugeben. 1 ist das kleinste Komprimierungsverhältnis und die schnellste Verarbeitungsgeschwindigkeit, 11 ist das größte Komprimierungsverhältnis. Die Übertragungsgeschwindigkeit ist schnell, aber die Verarbeitung ist langsam und es werden mehr CPU-Ressourcen verbraucht. Der Standardwert ist 6, Sie können also den Standardwert verwenden. brotli_buffers 16 8k Legt die Anzahl und Größe der Puffer fest, die zum Komprimieren von Antworten verwendet werden. Standardmäßig entspricht die Puffergröße einer Speicherseite. Standardwert: 32 4k|16 8k. brotli_min_length 20 Legt die Mindestlänge einer zu komprimierenden Antwort fest. Die Länge wird ausschließlich durch das Antwortheaderfeld „Content-Length“ bestimmt. Der Standardwert ist 20. Brotli-Typen Wird verwendet, um den Komprimierungstyp anzugeben. Der Typ „Text/HTML“ wird immer komprimiert. Die Konfigurationsdetails von gzip und brotli werden dem Code der Reverse-Proxy-Konfigurationsdatei hinzugefügt: proxy_set_header Accept-Kodierung ""; Beispiel: Server { ... Standort / { ... proxy_set_header Accept-Kodierung ""; ... } ... } Starten Sie nginx neu, damit die Konfiguration wirksam wird systemctl startet nginx neu Die Brotli-Komprimierung kann nur bei https wirksam werden, da im Accept-Encoding: gzip, deflate-Anforderungsheader in der http-Anforderung kein br vorhanden ist. Sie sollten sich angewöhnen, nach jeder Kompilierung die aus dem Anwendungspaket extrahierten Dateien oder Verzeichnisse zu löschen. rm -rf /usr/src/{nginx-1.14.2/,ngx_brotli/} Überprüfen Sie abschließend, ob es funktioniert Öffnen Sie die Webseite und debuggen Sie sie mit den Chrome-Entwicklertools. Sie finden content-encoding:br in der Spalte „Netzwerk“ und der Netzwerkzeitverbrauch wird erheblich reduziert. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So verwenden Sie Provide zur Implementierung der Statusverwaltung in Vue3
>>: Detaillierte Erklärung zur Verwendung des Schlüsselworts ESCAPE in MySQL
Die offizielle Version 8.0.11 von MySQL 8 wurde v...
Der vorherige Artikel war eine einfache Überprüfu...
Bei vielen Benutzern ist dieser Fehler beim Start...
Wenn das Front-End die Schnittstelle anfordert, w...
Inhaltsverzeichnis 1. Einleitung 2. Der Unterschi...
1. Ich habe ein VPS- und CentOS-System gekauft un...
Links zur aktuellen Seite. ------------------- Übl...
Webserver 1. Der Webserver schaltet unnötige IIS-...
Erstellen Sie ein neues Projekt test1 auf Code Cl...
Die Wirkung ist wie folgt: analysieren 1. Hier se...
Problembeschreibung: Der Inhalt der Datei 11 laut...
Lösung: Fügen Sie in <head> den folgenden Co...
HTML ist eine Hybridsprache, die zum Veröffentlic...
Beim Front-End-Layout des Formulars müssen wir hä...
Hier sind die detaillierten Schritte: 1. Überprüf...