Da die Apache-Module mod_gzip, mod_expires und mod_deflate auf einem United-Domains-Webspace nicht zur Verfügung stehen, gab mir der Support folgende Alternativen:

Zur Komprimierung lässt sich jede komprimierbare Datei als PHP-Script mit entsprechendem Header ausliefern. Dazu verwendet man eine PHP-Datei mit folgendem Inhalt Präfix:

<?php
ob_start('ob_gzhandler');
?>

In der .htaccess wird mit folgendem Beispiel-Code erreicht, dass die dort genannten Dateitypen entsprechend anders ausgeliefert und vorweg komprimiert werden:

<FilesMatch "\.(css)">
    Header set Content-Type "text/css"
    ForceType application/x-httpd-php  
    php_value auto_prepend_file "/absoluter Pfad/Domainverzeichnis/gzip.php"   
</FilesMatch>
<FilesMatch "\.(js)">
    Header set Content-Type "application/javascript"
    ForceType application/x-httpd-php  
    php_value auto_prepend_file "/absoluter Pfad/Domainverzeichnis/gzip.php"   
</FilesMatch>
<FilesMatch "\.(htm|html)">
    Header set Content-Type "text/html"
    ForceType application/x-httpd-php  
    php_value auto_prepend_file "/absoluter Pfad/Domainverzeichnis/gzip.php"   
</FilesMatch>

Auf ähnliche Weise lassen sich Header mit Caching-Anweisungen für den Browser bestücken. Hier das vom Support genannte Beispiel, welches ich für meine Zwecke noch mit „Expires“-Anweisungen ergänzt habe:

<IfModule mod_headers.c>
# 1 Jahr
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
 
# 1 Woche
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
 
# 3 Stunden
<FilesMatch "\.(txt|xml|js|css)$">
Header set Cache-Control "max-age=10800"
</FilesMatch>
 
# Niemals Cachen
<FilesMatch "\.(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>
</IfModule>

Die Lösung scheint ausreichend gut zu funktionieren und ist in jedem Fall mit weniger Aufwand verbunden als den Hoster zu wechseln.

6 Antworten

  1. Hallo, vielen Dank für die schöne Beschreibung. Lange versuche ich Gzip zu aktievieren. Mit Ihrer Beschreibung hat es nun endlich funtioniert. Leider zerhackt es mir auch die ganze Webseite und alle Bilder werden dadurch nicht mehr geladen. Gibt es dafür eine Anleitung?
    Freundliche Grüße

    1. Hallo Christian,

      häufig handelt es sich dabei um Fehler im obigen Code, z. B. wenn nicht korrekte Anführungszeichen verwendet wurden oder der Pfad nicht korrekt angepasst wurde.

      Dies solltest du einmal überprüfen, eine genauere Analyse ließe sich nur am lebenden Objekt vornehmen.

      Viele Grüße
      Marc

  2. Hallo Marc,

    Danke für deine Antwort.
    Inzwischen bin ich weiter gekommen. Ich nutze nun in der .htaccess folgenden Code um die Komprimierung anzuschieben

    php_value output_handler ob_gzhandler

    Header set Content-Type „text/css“
    ForceType application/x-httpd-php

    Header set Content-Type „application/javascript“
    ForceType application/x-httpd-php

    Header set Content-Type „text/html“
    ForceType application/x-httpd-php

    Hierbei werden die Daten vor der Ausgabe durch PHP komprimiert.

    Als weitere Möglichkeit können die Dateien bereits komprimiert auf dem Webspace abgelegt und durch mod_rewrite ausgeliefert werden

    Die Dateien können hierzu z.B. auf dem lokalen Rechner mit GZip komprimiert und auf dem Websapce übertragen werden. Hierzu kann nachfolgende mod_rewrite Regel verwendet werden:

    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -f
    RewriteRule (.*\.(js|css))$ $1.gz [L]

    AddEncoding x-gzip .gz

    ForceType application/x-javascript

    ForceType text/css

    Die komprimierten Dateien müssen hierbei z.B. den Namen dateiname.css.gz oder dateiname.js.gz tragen.

  3. Hallo,

    vielen Dank für den Tipp. Leider bin ich kein IT Experte, so wie viele andere WordPress Nutzer auch und weiss nicht genau was ich tun soll.

    „Dazu verwendet man eine PHP-Datei mit folgendem Inhalt Präfix“

    Was genau muss ich tun? Eine neue PHP-Datei mit beliebigem Namen anlegen und folgendes einfügen?:

    Und was genau muss in dem Beispiel Code womit ersetzt werden?

    Ich vermute: „absoluter Pfad/Domainverzeichnis“ , habe aber keine Ahnung was das genau bedeuten soll. Domainverzeichnis soll die URL sein?

    Über eine Antwort würde ich mich freuen.

    MfG
    Adam

    1. Hallo Adam,

      bitte habe Verständnis dafür, dass ich hier nicht weiter ins Detail gehen kann. Evtl. hilft dir jedoch bereits der folgende Kommentar weiter.

      Viele Grüße
      Marc

  4. Kurzes Update. Mittlerweile ist es auch möglich einfach die PHP Version auf 7.1 zu updaten. Hier sind die Module Gzip und DEFLATE bzw die Komprimierung schon automatisch enthalten. Läuft super grade für einen Kunden gemacht und Page Speed kurz um 40 Zähler nach oben gedrückt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert