Was ist HTTP-Komprimierung Manchmal werden relativ große Nachrichtendaten zwischen dem Client und dem Server übertragen, was viel Netzwerkbandbreite und Zeit in Anspruch nimmt. Um Bandbreite zu sparen und die Antwortgeschwindigkeit der Nachricht zu beschleunigen, können die zu übertragenden Nachrichtendaten vor der Übertragung komprimiert werden. HTTP unterstützt mehrere Nachrichtenkomprimierungsalgorithmen. Das Folgende ist ein allgemeiner Anforderungsheader. Aus dem Feld Accept-Encoding können wir ersehen, dass es die Komprimierungsalgorithmen gzip, deflate und br unterstützt. In diesem Artikel konzentrieren wir uns auf die Verwendung des Gzip-Algorithmus zum Komprimieren von Nachrichten, beispielsweise Gzip zum Komprimieren von HTML-, Javascript- und CSS-Dateien. Nach der Komprimierung kann die über das Netzwerk übertragene Datenmenge erheblich reduziert und die Geschwindigkeit erhöht werden, mit der Benutzer Webseiten anzeigen. Akzeptieren: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Akzeptierte Kodierung: gzip, deflate, br Akzeptierte Sprache: zh-CN,zh;q=0.9 Cache-Steuerung: max-age=0 Verbindung: Keep-Alive Host: localhost:8000 If-Modified-Since: Dienstag, 21. April 2020, 14:09:01 GMT Wenn keine Übereinstimmung: "5e9efe7d-264" Upgrade-Unsichere-Anfragen: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/71.0.3578.98 Safari/537.36 Jede Technologie hat zwei Seiten. Obwohl HTTP-Komprimierung die Bandbreitennutzung reduzieren und die Reaktionsgeschwindigkeit erhöhen kann, beansprucht sie einige Rechenressourcen auf dem Client oder Server, da sie zusätzliche Komprimierungs- und Dekomprimierungsprozesse erfordert. Leser, die mit HTTP vertraut sind, wissen, dass HTTP-Nachrichtentexte codiert und verschlüsselt werden können. Tatsächlich ist die HTTP-Komprimierung eine spezielle Kodierungsmethode. Durch die Verwendung dieser Kodierungsmethode kann die Nachrichtengröße erheblich reduziert werden, und durch die Verwendung der entsprechenden Lösungsmethode kann die ursprüngliche Nachricht wiederhergestellt werden. (Wir können sehen, dass das Wesen der Komprimierungstechnologie eigentlich eine Art Kodierungsmethode ist.) Anwendungsszenarien für HTTP-Komprimierung Aus der obigen Einführung zur HTTP-Komprimierung können wir ersehen, dass es sich bei dieser Technologie um eine Optimierungstechnologie handelt, die häufig verwendet wird, um die vom Server zurückgegebenen Nachrichten zu komprimieren, um Bandbreite zu sparen und die Antwort zu beschleunigen. Im Folgenden finden Sie eine kurze Einführung in die Verwendung der Gzip-Komprimierung in HTTP.
Der Client kann auch komprimierte Daten an den Server senden und die angeforderten Daten über Code dekomprimieren. Zur Standardisierung sollte der Anforderung auch Content-Encoding:gzip hinzugefügt werden. Implementieren der HTTP-Komprimierung mit Nginx Nginx unterstützt HTTP-Gzip-Komprimierung. Hier erfahren Sie, wie Sie Nginx anpassen, um die Antwortnachricht zu komprimieren. Nginx unterstützt die Gzip-Funktion über die Module ngx_http_gzip_module, ngx_http_gzip_static_module und ngx_http_gunzip_module. Im Allgemeinen kompiliert Nginx diese Module standardmäßig. Sie können den Befehl nginx -V verwenden, um zu sehen, ob Ihr installiertes Nginx diese Module enthält. Gzip-bezogene Anweisungen können im HTTP-Block, Server-Block oder Standortblock der Konfigurationsdatei stehen. Modul ngx_http_gzip_module Das Modul ngx_http_gzip_module ist hauptsächlich für das Aktivieren und Einstellen der Gzip-Funktion und das Durchführen einer Online-Echtzeitkomprimierung der Antwortdaten verantwortlich. Dieses Modul enthält die folgenden Hauptanweisungen. # Aktivieren oder deaktivieren Sie die Gzip-Funktion. Standardmäßig ist dieser Befehl deaktiviert, was bedeutet, dass die Gzip-Funktion nicht aktiviert ist. Nur wenn diese Direktive auf on gesetzt ist, sind andere Direktiveneinstellungen wirksam gzip on | off # Legen Sie die Größe des Cachespeichers fest, der von Gzip-komprimierten Dateien verwendet wird. # Der Standardwert ist: gzip_buffers 32 4k|16 8k gzip_buffers Zahlengröße; # Mit diesem Befehl wird die Gzip-Komprimierungsstufe eingestellt, einschließlich Stufe 1 bis Stufe 9. # Stufe 1 bedeutet die niedrigste Komprimierungsstufe und die höchste Komprimierungseffizienz; Stufe 9 bedeutet die höchste Komprimierungsstufe, die niedrigste Komprimierungseffizienz und den längsten Zeitaufwand. # Standard ist 1 gzip_comp_level-Ebene # Für Anfragen, die von verschiedenen Clienttypen initiiert werden, kann die Gzip-Funktion selektiv aktiviert oder deaktiviert werden. #Unterstützt reguläre Ausdrücke, wobei der reguläre Ausdruck basierend auf dem Browser-Flag des Clients (User-Agent, UA) festgelegt wird. gzip_disable regulärer Ausdruck ...; # Diese Einstellung verwendet einen regulären Ausdruck, der mit allen Browsern übereinstimmt, die MSIE 4, MSIE 5 und MSIE6 in der UC-Zeichenfolge enthalten. # Beim Antworten auf Anfragen dieser Browser führt der Nginx-Server keine Gzip-Komprimierung durch. gzip_disable MSIE [4-6]\.; # Einige ältere Browser oder HTTP-Clients unterstützen die Gzip-Selbstdekomprimierung möglicherweise nicht, sodass Benutzer manchmal verstümmelte Zeichen sehen. Daher muss die Gzip-Funktion für verschiedene HTTP-Protokollversionen selektiv aktiviert oder deaktiviert werden. Mit dieser Anweisung wird die Mindestversion des HTTP-Protokolls zum Aktivieren der Gzip-Funktion festgelegt. # Die Standardeinstellung ist Version 1.1, d. h. die Gzip-Funktion wird nur dann zum Komprimieren der Antwortausgabedaten verwendet, wenn der Client das HTTP-Protokoll Version 1.1 oder höher verwendet. # Derzeit unterstützen die meisten Browser die Selbstdekomprimierung von Gzip, daher ist der Standardwert im Allgemeinen akzeptabel. zip_http_version 1.0 | 1.1; # Diese Anweisung legt die Anzahl der Bytes der Seite fest. Die Gzip-Funktion wird nur aktiviert, wenn die Größe der Antwortseite diesen Wert überschreitet. # Es wird empfohlen, gzip_min_length auf 1024 zu setzen; gzip_min_length Länge; # Wird verwendet, um festzulegen, ob der Nginx-Server eine Gzip-Komprimierung für die vom Backend-Server zurückgegebenen Ergebnisse durchführt; # Im Allgemeinen wird das Backend als RestAPI-Schnittstelle verwendet und die zurückgegebene Datenmenge ist nicht zu groß, daher wird eine Komprimierung nicht empfohlen. # Wenn Sie die vom Backend zurückgegebenen Daten wirklich komprimieren müssen, können Sie den Inhalt dieses Abschnitts überprüfen: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...; # Legen Sie den MIME-Typ fest. Der festgelegte Typ wird komprimiert. Der Standardwert ist: text/html # Diese Variable kann auch auf „*“ gesetzt werden, was Gzip-Komprimierung von Seitendaten aller MIME-Typen bedeutet. # Im Allgemeinen kann sie auf Folgendes gesetzt werden: gzip_types text/plain application/javascript text/css text/xml gzip_types MIME-Typ ...; # Das Einschalten bewirkt, dass Accept-Encoding: gzip zum Antwortheader hinzugefügt wird. gzip_vary an | aus; Modul ngx_http_gzip_static_module Das Modul ngx_http_gzip_static_module ist hauptsächlich für die Suche und das Senden von durch die Gzip-Funktion vorkomprimierten Daten verantwortlich. Diese Dateien werden auf dem Server mit der Endung „.gz“ gespeichert. Wenn die vom Client angeforderten Daten zuvor komprimiert wurden und der Client-Browser die Gzip-Komprimierung unterstützt, werden die komprimierten Daten direkt zurückgegeben. Der Hauptunterschied zwischen diesem Modul und dem Modul ngx_http_gzip_module besteht darin, dass dieses Modul statische Komprimierung verwendet und das Header-Feld Content-Length in den HTTP-Antwortheader einfügt, um die Länge des Nachrichtentexts anzugeben. Es wird verwendet, wenn der Server die Länge der Antwortdaten bestimmen kann; während letzteres standardmäßig Chunked-codierte dynamische Komprimierung verwendet. Es eignet sich hauptsächlich für Situationen, in denen der Server die Länge der Antwortdaten nicht bestimmen kann, z. B. beim Herunterladen großer Dateien, und die Datenlänge in Echtzeit generiert werden muss. Die Verwendung der Anweisungen dieses Moduls ähnelt der des Moduls ngx_http_gzip_static_module. Daher werden wir hier nicht ins Detail gehen. Sie können sich auf die offizielle Dokumentation beziehen Dieses Modul ist ein optionales HTTP-Modul für den Nginx-Server. Wenn Sie es verwenden möchten, müssen Sie bei der Konfiguration des Nginx-Programms die Direktive --with-http_gzip_static_module hinzufügen. Modul ngx_http_gunzip_module Der Nginx-Server unterstützt die Gzip-Komprimierung des Antwortausgabedatenstroms. Damit der Client-Browser Gzip-komprimierte Daten dekomprimieren und verarbeiten kann, muss er in der Lage sein. Wenn der Client selbst diese Funktion jedoch nicht unterstützt, muss der Nginx-Server die Daten vor dem Senden dekomprimieren. Diese komprimierten Daten können aus der Komprimierung des Backend-Servers oder der Vorkomprimierung des Nginx-Servers stammen. Das Modul ngx_http_gunzip_module wird zum Dekomprimieren komprimierter Daten für Client-Browser verwendet, die die Verarbeitung komprimierter Gzip-Daten nicht unterstützen. Ebenso werden die Anweisungen zur Verwendung dieses Moduls nicht im Detail erweitert. Sie können sich auf die offizielle Dokumentation beziehen Moderne Browser unterstützen im Allgemeinen die Komprimierung, sodass dieses Modul seltener verwendet wird. Konfigurationsbeispiel gzip an; gzip_min_länge 1000; gzip_proxied, abgelaufen, kein Cache, kein Store, private Authentifizierung; gzip_types Text/einfache Anwendung/XML; Um dem Nginx-Server die globale Anwendung der Gzip-Komprimierungsfunktion zu ermöglichen, können Sie die Gzip-Konfiguration in den globalen HTTP-Block einfügen. Wenn wir jeden virtuellen Host anders behandeln möchten, können wir Mehr lesen Nicht alle im Alltag entwickelten Anwendungen verwenden Nginx. Sehen wir uns an, wie andere Webserver die Unterstützung für HTTP-Komprimierung aktivieren können. 1. Aktivieren Sie die Komprimierung für Tomcat, das in Spring Boot eingebettet ist Tomcat unterstützt als Servet-Container + HTTP-Server auch GZIP-Komprimierung. Wenn wir den herkömmlichen Tomcat verwenden, müssen wir nur die HTTP-Komprimierung in der server.xml-Konfiguration aktivieren. Aufgrund der Eigenschaften von Spring Beans können Sie jedoch die standardmäßig zusammengestellten Beans, einschließlich Tomcat-bezogener Konfigurationen, überschreiben. Verwenden Sie die TomcatConnectorCustomizer-Schnittstelle, um die Komprimierungskonfiguration zu aktivieren. öffentliche Klasse ConnC1 implementiert TomcatConnectorCustomizer { @Überschreiben öffentliche Leere anpassen(Connector Connector) { ProtokollHandler ProtokollHandler = Connector.getProtocolHandler(); if (protocolHandler-Instanz von Http11NioProtocol) { Http11NioProtocol http11NioProtocol = (Http11NioProtocol)protokollHandler; http11NioProtocol.setCompression("on");//standardmäßig aus http11NioProtocol.setCompressibleMimeType(); http11NioProtocol.setCompressionMinSize(2048);//Standard 2048(B) http11NioProtocol.setMaxKeepAliveRequests(1);//Standard 200 } } } In Bezug auf die Unterstützung von Tomcat für HTTP-Komprimierung können Sie in der CompressionConfig-Klasse von Tomcat nach Hinweisen suchen. Wenn Sie lediglich die Komprimierungsunterstützung aktivieren möchten, müssen Sie in Spring Boot lediglich die folgende Konfiguration vornehmen: Server: Kompression: aktiviert: true Mindestantwortgröße: 1024 MIME-Typen: Anwendung/Json Zusammenfassen Dies ist das Ende dieses Artikels über die Gzip-Funktion von Nginx. Weitere Informationen zur Gzip-Funktion von Nginx finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der Kartenüberlagerung in OpenLayers6
>>: mysql ist keine interne Befehlsfehlerlösung
Ich werde nicht viel Unsinn erzählen, schauen wir...
Vue-Komponenten sind verbunden, daher ist es unve...
Inhaltsverzeichnis 1. Grundlegendes Verständnis v...
<br />Verwandte Artikel: innerHTML HTML DOM ...
Autor | Herausgeber Awen | Produziert von Tu Min ...
Inhaltsverzeichnis Vorwort 1. Anwendungsbeispiele...
So ermöglichen Sie Tomcat die Unterstützung des h...
Dieser Artikel stellt die Blue-Green-Bereitstellu...
Nichtorthogonale Ränder Wenn ein Rand verwendet w...
Die Drag-Funktion wird hauptsächlich verwendet, u...
1. Beschreibung des Versprechens Promise ist ein ...
Einführung Das Modul, das die Anzahl gleichzeitig...
MySQL-Fehler: Parameterindex außerhalb des gültig...
1. Vergleichen Sie den alten virtuellen DOM mit d...
Einführung MySQL erreicht eine hohe Verfügbarkeit...