Die Brotli-Komprimierung ist eine generische Komprimierungstechnik, die in den Browsern weit verbreitet ist. Es ist vergleichbar mit den derzeit verfügbaren Komprimierungsmethoden, da es 20-26% bessere Komprimierungsverhältnisse bietet. Trotzdem ist es nicht gut, es sei denn, der Webserver sendet komprimierte textbasierte Ressourcen mit dem Brotli-Algorithmus.
In diesem Artikel erfahren wir, wie Komprimierung auf dem Server funktioniert und warum es nützlich ist? Wir werden auch lernen, den Nginx -Server zu installieren und unseren Server dazu zu bringen, brotli -komprimierte Dateien bereitzustellen.
Hintergrund
Komprimierungstechniken/Algorithmen verbessern die Website der Website, indem sie die Inhaltsgröße verringert. Daher benötigt die komprimierten Daten eine niedrige Last- und Übertragungszeit. Es hat jedoch einen Preis. Server verwenden viele Rechenressourcen, um eine bessere Komprimierungsrate zu bieten. Daher desto besser, desto teuer. Daher wird viel Aufwand hinzugefügt, um die Kompressionsformate zu verbessern und gleichzeitig minimale CPU -Zyklen zu verwenden.
Inzwischen wurde das potenziellste Komprimierungsformat gzipiert. Kürzlich wird Gzip durch einen neuen Komprimierungsalgorithmus ersetzt, der als Brotli bekannt ist. Es handelt sich. Im Gegensatz dazu basiert Gzip auf dem Deflatalgorithmus.
Das von Google entworfene verlustfreie Komprimierungsformat ist eng mit dem Deflat -Komprimierungsformat zusammenhängen. Beide Komprimierungsmethoden verwenden Schiebernfenster für die Rückenreferenzierung. Die Brotli -Schieberfenstergröße reicht von 1 kb bis 16 MB. Im Gegensatz dazu hat GZIP eine feste Fenstergröße von 32 KB. Das bedeutet.
Die Komprimierungskompatibilität der Server ist wichtig
Wenn wir eine Datei aus dem Browser herunterladen, fordert der Browser den Server an, welche Art von Komprimierung sie über einen Header unterstützt. Zum Beispiel, wenn der Browser unterstützt gzip Und Deflate zu dekomprimieren. Es wird diese Optionen in seine hinzufügen Akzeptieren, Kopfball, ich.e.,
ACCEPTION-CODING = ”Deflate, Gzip”
Daher werden die Browser, die diese Formate nicht unterstützen. Wenn der Server mit dem Inhalt reagiert, teilt er dem Browser über das Komprimierungsformat über einen Header mit, Inhaltskodierung. Wenn es GZIP unterstützt, sieht der Header so aus:
Content-coding = "gzip"
Header der Browser wie Firefox, die die Brotli -Komprimierung und den Webserver unterstützen, das ein Brotli -Modul installiert hat, um so auszusehen:
ACCEPTION-CODING = ”Deflate, Gzip, BR”
Content-Coding = "Gzip, BR"
Wenn der Browser das beste Komprimierungsformat verwendet und der Webserver nicht der Fall ist, ist es nicht gut, da der Webserver die Dateien nicht mit dem bevorzugten Komprimierungsalgorithmus zurücksendet. Deshalb ist es wichtig, das Komprimierungsmodul für den Webserver zu installieren.
Serverinstallation
Bevor wir uns mit der Brotli -Konfiguration fortsetzen, richten wir unseren Nginx -Server ein. Davor sudo APT-Get-Update Ihre Ubuntu -Verteilung und Ihre folgenden Befehle in Ihrem Bash -Terminal eingeben.
Ubuntu@Ubuntu: ~ $ sudo Apt-Get-UpdateUm die Brotli -Komprimierung in der Nginx zu aktivieren, werden wir unsere kompilieren .Module gemäß unseren Nginx -Versionsdetails. Wie gezeigt, gibt das Eingeben des folgenden Befehls die Nginx -Version aus:
Ubuntu@Ubuntu: ~ $ nginx -vBenutze die wget Befehl zusammen mit Ihrem NGINX -Versionsdetail zum Herunterladen des Quellcodes von der NGINX -Website.
Ubuntu@ubuntu: ~ $ wget https: // nginx.org/download/nginx-1.18.0.Teer.gzWir werden diesen Quellcode verwenden, um * zu kompilieren *.Also Binärdateien für die Brotli -Komprimierung. Extrahieren Sie nun die Datei mit dem folgenden Befehl.
Ubuntu@Ubuntu: ~ $ tar xzf nginx-1.18.0.Teer.gzBrotli -Modulkonfiguration
Jetzt hat Google das Brotli -Modul für Nginx veröffentlicht. Wir werden das Modul aus dem Google-Repository klonen.
Ubuntu@Ubuntu: ~ $ Git Clone https: // github.com/google/ngx_brotli -recursive.Wir werden CD in die nginx-1.18.0 Ordner zum Konfigurieren des dynamischen Brotli -Moduls.
Ubuntu@Ubuntu: ~ $ cd nginx-1.18.0/Hinweis: Sie erhalten möglicherweise den folgenden Fehler beim Konfigurieren
./Konfigurieren: Fehler: Das HTTP -Umschreiben -Modul benötigt die PCRE -Bibliothek.Führen Sie in diesem Fall den folgenden Befehl aus, um die PCRE -Bibliothek zu installieren
Ubuntu@ubuntu: ~ $ sudo apt-Get Install libpcre3-dev -yModulkompilierung
Wir werden die verwenden machen Befehl zum Erstellen von a Module Ordner im Nginx-1.18.0 Verzeichnis.
Ubuntu@Ubuntu: ~ $ sudo machen ModuleWir benutzen das CP Befehl zum kopieren ngx_http_brotli*.So Dateien aus dem nginx-1.18.0/objs Ordner zum Modulordner.
Ubuntu@Ubuntu: ~ $ cd /nginx-1.18.0/objs/Listen Sie nun den Inhalt der Dateien mit dem auf ls Befehl. Sie werden feststellen, dass es aus zwei verschiedenen Moduldateien besteht, ich.e.:
Ubuntu@Ubuntu: ~ $ ls ngx_http_brotli*.SoVerwenden Sie jetzt Ihren bevorzugten Editor, um die/etc/nginx/nginx zu öffnen.Conf -Datei zum Hinzufügen von Brotli -Lademodulen, um die Brotli -Konfiguration durch Einbeziehung der folgenden Zeilen zu starten:
Ubuntu@ubuntu: ~ $ sudo vim/etc/nginx/nginx.ConfWir werden auch Konfigurationsordnerpfade einbeziehen /etc/nginx/conf.D/*.Conf
Und /usr/share/nginx/modules/*.Conf In der obigen Datei wie:
httpSo fügen Sie die Brotli -Konfiguration hinzu, öffnen Sie/etc/nginx/conf.D/Brotli.Conf
Datei in der Vim Editor und aktivieren Sie Brotli, indem Sie die folgenden Konfigurationsrichtlinien festlegen:
Brotli auf;Der "Brotli aus | auf”Wert ermöglicht oder deaktiviert dynamisch oder im Fliegenkomprimieren des Inhalts.
Der 'brotli_ static on ' Ermöglicht dem Nginx-Server, zu überprüfen, ob die vorkomprimierten Dateien mit dem .BR -Erweiterungen existieren oder nicht. Wir können diese Einstellung auch in eine Option umwandeln aus oder stets. Der stets Der Wert ermöglicht dem Server, vorkomprimierte Inhalte zu senden, ohne zu bestätigen, ob der Browser ihn unterstützt oder nicht. Da Brotli ressourcenintensiv ist, eignet sich dieses Modul am besten, um die Engpasssituationen zu reduzieren.
Der "brotli_comp_level 6”Die Richtlinie setzt das dynamische Komprimierungsqualitätsniveau auf 6. Es kann zwischen 0 und 11 reichen.
Schließlich aktivieren Sie die dynamische Komprimierung für bestimmte MIME -Typen, während Text/HTML -Antworten immer komprimiert werden. Die Standardsyntax für diese Anweisung ist Brotli_types [MIME -Typ]. Weitere Informationen zur Konfigurationsrichtlinie finden Sie in GitHub.
Speichern Sie die Änderungen und starten Sie den Nginx -Dienst durch Eingabe neu "Sudo Service Neustart Nginx" Und alles ist alles getan.
Abschluss
Nach den Änderungen werden Sie einige offensichtliche Verbesserungen der Leistungsmetriken feststellen. Es wird jedoch mit einem leichten Nachteil der erhöhten CPU -Last zu Spitzenzeiten geliefert. Um solche Situationen zu vermeiden, behalten Sie die CPU -Verwendung im Auge; Wenn es regelmäßig 100% erreicht, können wir viele Optionen gemäß unseren Vorlieben nutzen, z.