Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie die komprimierte Apache PHP GZIP-Ausgabe

So implementieren Sie die komprimierte Apache PHP GZIP-Ausgabe

WBOY
WBOYOriginal
2016-07-29 09:14:52833Durchsuche

1. Einführung in gzip

gzip ist die Abkürzung für GNU-freies Software-Dateikomprimierungsprogramm und wird häufig zur Darstellung von gzip verwendet . Dateiformat. Die Autoren der Software sind Jean-loup Gailly und Mark Adler. Es wurde erstmals am 31. Oktober 1992 veröffentlicht. Die Versionsnummer ist 0.1. Die aktuelle stabile Version ist 1.2.4.

Gzip wird hauptsächlich zur Dateikomprimierung in Unix-Systemen verwendet. Unter Linux verwenden wir häufig Dateien mit der Endung .gz, und sie liegen im GZIP-Format vor. Heutzutage ist es ein sehr verbreitetes Datenkomprimierungsformat oder Dateiformat, das im Internet verwendet wird. Bei der Anwendung der Gzip-Komprimierung auf eine reine Textdatei ist der Effekt sehr offensichtlich. Nach der GZIP-Komprimierung kann die Seitengröße je nach Inhalt der Datei 40 % oder weniger der Originalgröße betragen.

Die GZIP-Kodierung über das HTTP-Protokoll ist eine Technologie zur Verbesserung der Leistung von WEB-Anwendungen. In der Webentwicklung können Sie gzip zum Komprimieren von Seiten verwenden, um den Verkehr der Website zu reduzieren. Allerdings erhöht sich die CPU-Auslastung durch gzip nur geringfügig, es kann jedoch komprimiert werden die Seite um mehr als 30 %, sehr kostengünstig.

Mit dem Gzip-Modul in Apache können wir den Gzip-Komprimierungsalgorithmus verwenden, um den vom Apache-Server veröffentlichten Webinhalt zu komprimieren und ihn dann an den Client-Browser zu übertragen . Durch diese Komprimierung wird tatsächlich die Anzahl der über das Netzwerk übertragenen Bytes reduziert (Netzwerk-E/A für die Übertragung eingespart). Der offensichtlichste Vorteil besteht darin, dass das Laden von Webseiten beschleunigt werden kann.

Die Vorteile der Beschleunigung des Ladens von Webseiten liegen auf der Hand. Neben der Einsparung von Verkehr und der Verbesserung des Surferlebnisses des Benutzers sind Gzip und die Suchindizierung Der Crawler der Engine hat eine bessere Beziehung. Beispielsweise kann Google Webseiten schneller crawlen als beim normalen manuellen Crawlen, indem es GZIP-Dateien direkt liest. In den Google Webmaster-Tools können Sie sehen, dass sitemap.xml.gz direkt als Sitemap übermittelt wird. Und diese Vorteile beschränken sich nicht nur auf statische Inhalte. PHP-dynamische Seiten und andere dynamisch generierte Inhalte können mithilfe des

Apache

-Komprimierungsmoduls sowie anderer Leistungsanpassungsmechanismen und entsprechender Serverseite komprimiert werden Caching-Regeln, die die Website-Leistung erheblich verbessern können. Daher empfehlen wir für PHP-Programme, die auf Linux-Servern bereitgestellt werden, die Gzip-Webkomprimierung zu aktivieren, wenn der Server dies unterstützt.

2. Der Prozess der Verarbeitung der HTTP-Komprimierung durch den Webserver ist wie folgt: 1.

Webserver

Überprüfen Sie nach dem Empfang der HTTP-Anfrage vom Browser, ob der Browser die HTTP-Komprimierung unterstützt (Accept-Encoding-Informationen). 2. Wenn der Browser die HTTP-Komprimierung unterstützt,

Webserver

Überprüfen Sie den Suffixnamen der angeforderten Datei 3. Wenn es sich bei der angeforderten Datei um eine statische Datei wie HTML, CSS usw. handelt, prüft der

Webserver

ob die neueste Version der angeforderten Datei bereits im Komprimierungspufferverzeichnis vorhanden ist 4. Wenn die komprimierte Datei der angeforderten Datei nicht vorhanden ist, gibt der

Webserver

zurück unkomprimierte angeforderte Datei an den Browser und speichert die komprimierte Datei der angeforderten Datei im Komprimierungspufferverzeichnis ; 5. Wenn die neueste komprimierte Datei der angeforderten Datei bereits vorhanden ist, wird die komprimierte Datei der angeforderten Datei erstellt direkt zurückgegeben;

6. Wenn es sich bei der angeforderten Datei um eine dynamische Datei handelt,

Webserver

Komprimieren Sie den Inhalt dynamisch und geben Sie ihn an den Browser zurück. Der komprimierte Inhalt wird nicht im Komprimierungs-Cache-Verzeichnis gespeichert .

3. Aktivieren Sie die gzip-Funktion von Apache 🎜>Es gibt zwei Module auf Apache

, die den Gzip-Komprimierungsalgorithmus zur Komprimierung verwenden:

mod_gzip und mod_deflate. Um die Gzip-Webkomprimierung zu verwenden, stellen Sie zunächst sicher, dass Ihr Server eine dieser beiden Komponenten unterstützt. Obwohl die Verwendung von Gzip auch die Unterstützung des Client-Browsers erfordert, machen Sie sich keine Sorgen, die meisten Browser unterstützen derzeit Gzip, wie z. B. IE, Mozilla Firefox, Opera, Chrome usw.

Anhand des HTTP-Headers können wir schnell feststellen, ob der verwendete Client-Browser die GZIP-Komprimierung unterstützt. Wenn die folgenden Informationen im gesendeten HTTP-Header erscheinen, bedeutet dies, dass Ihr Browser die entsprechende gzip-Komprimierung unterstützt:

Der Code lautet wie folgt:

Accept-Encoding: gzip unterstützt mod_gzip

Accept-Encoding: deflate unterstützt mod_deflate

Accept-Encoding: gzip,deflate unterstützt sowohl mod_gzip als auch mod_deflate


Siehe Firebug :
„Apache

Implementierungsmethode der PHP-GZIP-komprimierten Ausgabe“ />

<strong>Accept-Encoding: gzip,deflate unterstützt sowohl mod_gzip als auch mod_deflate</strong><p> Wenn der Server die Unterstützung für die Gzip-Komponente ermöglicht, können wir sie in <span>http.conf oder .htaccess anpassen. Das Folgende ist ein einfaches Beispiel für die .htaccess-Konfiguration: </span></p><p> <span>mod_gzip-Konfiguration: </span></p><p><span>Der Code lautet wie folgt:</span></p><p><span> # mod_gzip: <br /> <ifModule mod_gzip.c> > mod_gzip_on Ja <br /> mod_gzip_dechunk Ja <br /> mod_gzip_item_<br />include<strong> Datei .(html?|txt|css|js|php|pl)$ </strong> mod_gzip_item_<br />include<strong> Handler ^cgi - Skript $ <p> MOD_GZIP_ITEM_ </strong> Include <br /> MIME ^Text /.* <strong> MOD_GZIP_ITEM_ </strong> Include <br /> OD_GZIP_ITEM_EXCLUDE RSPHEADER ^Content-Encoding :. <strong></strong><br /><br /><br /></span></p><p><span><span><span><span>mod_deflate-Konfiguration Beispiel: <span><span><br /><span></span></span></span></span></span></span></span>Öffnen</p>Öffnen<p>Apache<span>Konfigurationsdatei httpd .conf<span> <span><strong></strong><span></span></span></span>Entfernen Sie #LoadModule deflate_module module/mod_deflate.so aus dem #-Zeichen am Anfang </span></p><p><span> Der Code lautet wie folgt: <br /></span></p> # mod_deflate: <p> <ifmodule mod_deflate.c> html </p> AddOutputFilterByType DEFLATE text/xml <p> AddOutputFilterByType DEFLATE text/css <br /> AddOutputFilterByType DEFLATE text/javascript <br /> AddOutputFilterByType DEFLATE application/xhtml xml <br /> AddOutputFilterByType DEFLATE application/xml <br /> AddOutputFilterByType DEFLATE application/rss xml <br /> AddOutputFilterByType DEFLATE application/atom_xml <br /> AddOutputFilterByType DEFLATE application/x-javascript <br /> AddOutputFilterByType DEFLATE application/x-httpd-php <br /> AddOutputFilterByType DEFLATE image/ svg xml <br /> < ;/ifmodule> <br /><br /><br /><br /><br /><br /><br /></p><p><span>ri
Die folgenden Datei-MIME-Typen können entsprechend Ihrer eigenen Situation hinzugefügt werden. Wie bei PDF
, Bilder, Musikdokumente und dergleichen sind bereits stark komprimierte Formate. Eine wiederholte Komprimierung hat nur geringe Auswirkungen. Im Gegenteil, sie kann die Leistung verringern, indem sie die CPU-Verarbeitungszeit erhöht und Probleme beim Rendern verursacht. Es besteht also keine Notwendigkeit
Nochmals über Gzip komprimieren. Überprüfen Sie nach dem Übergeben der obigen Einstellungen den zurückgegebenen HTTP-Header. Wenn die folgenden Informationen angezeigt werden, bedeutet dies, dass die zurückgegebenen Daten komprimiert wurden. Das heißt, die im Website-Programm konfigurierte Gzip-Komprimierung ist wirksam geworden. <span><span><span><span><span><span><br /></span></span></span>Firebug-Ansicht: </span></span><img src=

Content-Encoding: gzip
Hinweis:

1) Die hier zurückgegebenen Informationen sind unabhängig davon, ob mod_gzip oder mod_deflate verwendet wird. Weil sie alle die GZIP-Komprimierung implementieren.

<strong>2) Kompressionsstufe 9 bezieht sich auf die Komprimierungsstufe (Einstellung des Komprimierungsverhältnisses). Der Wert reicht von 1 bis 9, wobei 9 die höchste Stufe ist. Es versteht sich, dass dadurch die Übertragungsgröße um bis zu 80 % reduziert werden kann (abhängig vom Dateiinhalt) und mindestens die Hälfte eingespart werden kann. Der Wert „CompressionLevel“ kann standardmäßig auf 6 eingestellt werden, um ein Gleichgewicht zwischen Prozessorleistung und Qualität der Webseitenkomprimierung zu gewährleisten. Es wird jedoch nicht empfohlen, ihn zu hoch einzustellen, obwohl die Komprimierung hoch ist Rate, es wird mehr CPU-Ressourcen beanspruchen </strong>3) Es besteht keine Notwendigkeit, Bildformate wie JPG, Musikdateien wie MP3 und komprimierte Dateien wie Zip, die bereits komprimiert sind, zu komprimieren. </p><p></p>4. Was sind die Hauptunterschiede zwischen mod_gzip und mod_deflate? Welches ist besser zu verwenden? <p></p><p> <br />Der erste Unterschied ist der Unterschied in der </p>Apache<p> <span>Webserver-</span>-Version, in der sie installiert sind: </p><p><span> <strong> </strong>Apache<strong> Die 1.x-Serie verfügt nicht über eine integrierte Webseitenkomprimierungstechnologie, daher wird zur Komprimierung ein zusätzliches mod_gzip-Modul eines Drittanbieters verwendet. Als </strong></span>Apache</p> 2.x offiziell entwickelt wurde, wurde die Webseitenkomprimierung berücksichtigt und das Modul mod_deflate als Ersatz für mod_gzip integriert. Obwohl beide den Gzip-Komprimierungsalgorithmus verwenden, sind ihre Funktionsprinzipien ähnlich. <p><span><strong></strong> <span>Der zweite Unterschied ist die Komprimierungsqualität: <strong></strong><p> mod_deflate hat eine etwas schnellere Komprimierungsgeschwindigkeit und mod_gzip hat eine etwas höhere Komprimierungsrate. Im Allgemeinen erreicht mod_gzip standardmäßig eine 4 bis 6 % höhere Komprimierung als mod_deflate. </p><p> Warum also mod_deflate verwenden? </p><p> <span>Der dritte Unterschied ist die Nutzung von Serverressourcen: </span></p><p> Im Allgemeinen hat mod_gzip eine höhere Auslastung der Server-CPU. mod_deflate
Es handelt sich um ein Komprimierungsmodul, das speziell zur Sicherstellung der Leistung des Servers verwendet wird, mod_deflate
Zum Komprimieren von Dateien sind weniger Ressourcen erforderlich. Das bedeutet, dass auf Servern mit hohem <strong>Verkehr</strong> die Verwendung von mod_deflate möglicherweise schneller lädt als mod_gzip. </p><p>
Nicht ganz verstanden? Kurz gesagt: Wenn Ihre Website weniger als 1.000 einzelne Besucher pro Tag hat und Sie das Laden von Webseiten beschleunigen möchten, verwenden Sie mod_gzip. Obwohl es einige zusätzliche Serverressourcen verbrauchen wird,
Aber es lohnt sich. Wenn Ihre Website mehr als 1.000 einzelne Besucher pro Tag hat und einen gemeinsam genutzten virtuellen Host mit begrenzten zugewiesenen Systemressourcen verwendet, verwenden Sie mod_deflate
wird eine bessere Wahl sein. </p><p> Darüber hinaus kann mod_deflate ab <strong>Apache</strong> 2.0.45 DeflateCompressionLevel verwenden
Direktive zum Festlegen der Komprimierungsstufe. Der Wert dieser Anweisung kann eine Ganzzahl zwischen 1 (schnellste Komprimierung, niedrigste Komprimierungsqualität) und 9 (langsamste Komprimierung, höchste Komprimierungsrate) sein. Der Standardwert ist 6 (Komprimierungsgeschwindigkeit und Komprimierungsqualität).
 einen ausgewogeneren Wert). Diese einfache Änderung macht mod_deflate leicht mit der Komprimierung von mod_gzip vergleichbar. </p><p>P.S. Für virtuelle Räume, in denen die beiden oben genannten Gzip-Module nicht aktiviert sind, können Sie auch die zlib-Funktionsbibliothek von PHP verwenden (Sie müssen auch prüfen, ob der Server dies unterstützt), aber diese Methode ist mehr Bequem zu verwenden. Es ist mühsam und verbraucht im Allgemeinen Serverressourcen. Bitte verwenden Sie es je nach Situation mit Vorsicht. </p><p><span>5. Komprimierung durch zlib.output_compression und ob_gzhandler-Kodierung </span></p><p> Der Server unterstützt keine mod_gzip- und mod_deflate-Module können zwei Methoden in Betracht ziehen. Aktivieren Sie <span>zlib.output_compression oder kodieren Sie über <span>ob_gzhandler </span></span>. </p><p> 1) zlib.output_compression dient dazu, Daten an den Client zu senden und gleichzeitig den Webinhalt zu komprimieren. </p><p> 2) ob_gzhandler wartet vor dem Senden auf die Komprimierung des Webseiteninhalts. Im Vergleich dazu ist Ersteres effizienter, es ist jedoch zu beachten, dass beide nicht gleichzeitig verwendet werden können, sondern nur Sie Wählen Sie eine aus, sonst wird ein Fehler angezeigt. </p><p> Eine kurze Beschreibung der Implementierung der beiden: </p><p><span> 1. zlib.output_compression-Implementierung <br /></span></p><p> Standardmäßig ist zlib aus: </p><p> Der Code lautet wie folgt: </p><p><br /> ; Transparente Ausgabekomprimierung mit der zlib-Bibliothek <br /> ; , oder eine bestimmte Puffergröße, die für die Komprimierung verwendet werden soll (Standard ist 4 KB) <br /> ; Die resultierende Blockgröße kann aufgrund der Art der Komprimierung variieren ein Ergebnis von <br /> ; Wenn Sie eine größere Blockgröße für eine bessere <br /> bevorzugen, aktivieren Sie zusätzlich <br /> ; Output_handler, andernfalls wird die Ausgabe beschädigt. <br /> ; http://php.net/zlib.output-compression -compression -level <br /> ;zlib.output_compression_level = -1 <br /><br /><br /><br /><br /></p><p><span><span><span> Um es zu aktivieren, bearbeiten Sie PHP .ini-Datei, fügen Sie den folgenden Inhalt hinzu: <span><span><span><span><br /><br /></span></span></span></span> Der Code lautet wie folgt: </span></span></span> zlib.output_compression = On </p> zlib.output_compression_level = 6 <p></p><p><br /><br /></p><p><span><span><span> Das Ergebnis kann über die Funktion phpinfo() erkannt werden. <span><span><span><span><br /></span></span></span></span> Wenn das Local von zlib.output_compression
Wenn die Werte von Value und MasterValue beide aktiviert sind, bedeutet dies, dass die zu diesem Zeitpunkt besuchte PHP-Seite (einschließlich der pseudostatischen Seite) über Firebug komprimiert wurde
Das GZIP-Komprimierungserkennungstool für Online-Webseiten kann den Komprimierungseffekt erkennen. </span>2. Implementierung von ob_gzhandler</span><p>Wenn Sie ob_gzhandler verwenden müssen, müssen Sie zlib.output_compression deaktivieren und den Inhalt der php.ini-Datei ändern in: <br /> zlib.output_compression = Off <br /> zlib.output_compression_level = -1 <br /> Durch Einfügen in die PHP-Datei implementiert relevanter Code die GZIP-Komprimierung P-Komprimierung: </p><p> Der Code lautet wie folgt: </p><p><br /> if (extension_loaded('zlib')) { <br /> if ( !headers_sent() AND isset($_SERVER) ['HTTP_ACCEPT_ENCODING']) && <br />                                                                                                                                                                                                                           🎜>           ob_start('ob_gzhandler'); 🎜><br /><br /><br /><br /><br /><br /><br /> Ob zlib.output_compression oder ob_gzhandler, statische Dateien wie HTML, CSS und JS können nur durch den Aufruf von PHP komprimiert werden.
<br /></p><p><span><span><span><span><span><span><span>Das Letzte, was ich sagen möchte, ist, dass die aktuellen Mainstream-Browser das HTTP1.1-Protokoll verwenden Standard. Grundlegend
Alle unterstützen die GZIP-Komprimierung, wenn Sie in der Menüleiste „Extras“ – „Internetoptionen“ – „HTTP 1.1-Einstellungen“ – „HTTP verwenden“ nicht auswählen
1.1, dann werden Sie das Vergnügen, das die Geschwindigkeitssteigerung nach der Webseitenkomprimierung mit sich bringt, nicht verspüren! <br /></span>
                
                
                </span>
                    Das Obige stellt die Implementierungsmethode der Apache PHP GZIP-komprimierten Ausgabe vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren. </span>
                </span>
                    </span>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn