Wie aktiviere ich mod_deflate für PHP-Dateien?
-
26-09-2019 - |
Frage
Ich habe ein Konto Flüssiges Web VPS habe ich darauf geachtet, dass mod_deflate installiert ist und läuft / aktiv ist.
Früher habe ich meine CSS und JS-Dateien über PHP gzip, sowie meine PHP-Dateien selbst ... Aber ich versuche jetzt diese über mod_deflate zu tun, und es scheint zu funktionieren für alle Dateien mit Ausnahme von PHP Dateien. (Txt-Dateien funktionieren, css, js, statische HTML-Dateien, einfach nichts, das über eine PHP-Datei generiert wird.) Wie kann ich dieses Problem beheben?
(I verwendet, um die „Komprimiert alle Inhalte“ Option unter „Optimieren Website“ in cPanel, die im Home-Verzeichnis (nicht public_html eine .htaccess-Datei erstellt, eine Stufe höher als das) mit genau dem gleichen Text als „Kompresse alles außer Bilder“Beispiel auf http://httpd.apache.org/docs/ 2.0 / mod / mod_deflate.html )
.htaccess-Datei:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
<IfModule mod_setenvif.c>
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
Lösung
Es ist ein gewesen Weile, da ich diese Frage geschrieben -. Ich landete ermöglicht zlib-Kompression über PHP.ini so zlib komprimiert PHP ausgegeben, während mod_deflate komprimiert alles andere
Ich denke, der Grund, es nicht funktioniert (mod_deflate wurde nicht PHP Ausgabe komprimiert) hat mit PHP läuft als CGI und nicht ein Apache DSO ...
zu tunAndere Tipps
PHP-Dateien dienen in der Regel text/html
Inhalt (obwohl Sie auch Bilder erzeugen können, und so ziemlich alles). PHP-Dateien werden nie an den Client gesendet: es verarbeitet wird Inhalt (text/html
oder Bilder) zu erzeugen.
Sie suchen diesen Inhalt gzip.
Sie können zlib.output_compression = On
auf die Datei php.ini-Konfigurationsdatei hinzufügen. Das wird die Ausgabe unabhängig von mod_deflate komprimieren.
Das ganze config Weg obsolet. Es kann und soll nun gelöscht werden. Netscape 4 nicht für eine lange Zeit schon, und Einstellung Vary: User-Agent
unnötig behindert das Caching
Die einzige mod_deflate Config Sie brauchen, ist eine Zeile deflate einzuschalten für kompressible Medien-Typen, entweder mit AddOutputFilter
komprimierbaren Dateien nach Erweiterung zu wählen, oder AddOutputFilterByType
wählen, um sie durch zurück Content-Type
.
Sie benötigen mod_deflate Richtlinien außerhalb Directory-Abschnitt zu bewegen. Definieren Sie Ihre Regeln global für mod_deflate
in Ihrem httpd.conf
Für den Fall, jemand mit dem gleichen Problem endet hier oben.
Ich schaltete mod_deflate auf meinem Server. Ich konnte aus der Antwort-Header in meinem Browser sehen, dass Text, CSS und Javascript-Dateien wurden mit gzip komprimiert werden. HTML-Dateien waren nicht komprimiert wird nach den Headern.
Es stellt sich heraus, es ist mein Virenschutz war. Es wurde Abfangen der eingehenden HTTP-Anforderung, und wenn es <html>
Tags in der Reaktion gesehen würde es sie dekomprimieren und seine eigene JavaScript in die Seite als Teil seiner „Web Anti-Virus“ ein. Es wäre aus der Antwort der gzip-Header abstreifen und es unkomprimiert liefern.
So wurde der Server richtig Gzipping alles, und mein Anti-Virus wurde unzipping es, bevor es zu mir.