Optimierung - Websites werden mit der gzip-Compression optimal komprimiert

  1. Zum Inhalt springen

webdesign
klamonfra
Klaus Franz


Optimierung - Wie komprimiere ich meine Dateien?

11Mär2014

Websites werden mit der gzip-Compression optimal komprimiert


Zu einer guten "Suchmaschinenoptimierung" gehört auch das schnelle Laden einer Webseite und dafür ist die Aktivierung der "gzip-Komprimierung" eine einfache und sehr wirkungsvolle Methode. Mit Hilfe dieser Kompression werden die Dateien, die der Webserver an den Browser des Besuchers sendet, automatisch komprimiert.
Es gibt drei verschiedene Möglichkeiten die Daten komprimiert an den Webbrowser zu liefern.

Als erstes kann man die Kompression der Dateien von Hand mit einem Tool erledigen lassen. Das ist allerdings nur bei Dateien sinnvoll, die sehr groß sind und nur sehr selten verändert werden, wie zum Beispiel die Javascript-Bibliothek jQuery.

Nachdem man die Datei mit einem Tool verkleinert hat, wird sie in das gleiche Verzeichnis wie die Originaldatei abgelegt. Allerdings muss man für die Datei auch noch die .htaccess (hypertext access - Hypertext-Zugriff)-Datei anpacken, in dem man folgenden Code einfügt:

<FilesMatch "\.js\.gz$">
  ForceType text/javascript
  Header set Content-Encoding: gzip
</FilesMatch>

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

Zuerst wird mit dem "FilesMatch" der "Response-Header" der Datei, in dem obigen Beispiel eine Datei mit der Endung ".js.gz", gesetzt.
Mit dem zweiten Block wird die Umleitung für alle vom Webserver auszuliefernden Dateien mit der Endung ".js" durch die "RewriteCond" Regel umgesetzt. Mit der dritten "RewriteCond" Regel wird noch vor der Umleitung geprüft, ob die gepackte Datei überhaupt vorhanden ist. Wenn nicht, wird die nicht gepackte Datei an den Webbrowser gesendet, ansonsten erfolgt die Umleitung durch die "RewriteRule", indem die angeforderte URL durch die Endung ".gz" erweitert wird.

Der Nachteil bei dieser Methode: Der Aufwand ist groß, denn man muss die Dateien selber komprimieren und hat zwei Versionen auf dem Server liegen.


Als zweites bietet sich die Komprimierung durch eine Zeile php (Skriptsprache: Hypertext Preprocessor) an. Bei dieser Methode wird auf jeder Seite die man komprimieren möchte, am Anfang der Seite der folgende Code eingefügt:

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

Diese Methode hat allerdings den großen Nachteil, dass alle Dateien geändert werden müssen. Ebenso müssen für CSS (Cascading Style Sheet)-Dateien oder JavaScripte (objektorientierte Programmiersprache) ein paar Zeilen in der .htaccess (hypertext access - Hypertext-Zugriff)-Datei ergänzt werden.

Für CSS (Cascading Style Sheet)-Dateien sieht der Code wie folgt aus:

<?php
  ob_start('ob_gzhandler');
  header('Content-Type: text/css');
?>

Und die entsprechenden Zeilen in der .htaccess (hypertext access - Hypertext-Zugriff)-Datei. Die .htaccess (hypertext access - Hypertext-Zugriff)-Datei muss dabei in dem gleichen Pfad wie die CSS (Cascading Style Sheet)-Dateien liegen.

<Files button.css>
  ForceType application/x-httpd-php
</Files>

Für JavaScripte (objektorientierte Programmiersprache) sieht es wie folgt aus:

<?php
  ob_start('ob_gzhandler');
  header('Content-Type: text/javascript');
?>
<Files keypress.js>
  ForceType application/x-httpd-php
</Files>

Anhand dessen erkennt man schon den sehr großen Aufwand!


Und damit komme ich zur dritten und aus meiner Sicht besten Möglichkeit: Die "gzip-Compression" direkt über die .htaccess (hypertext access)-Datei.

Die "gzip-Compression" über die .htaccess (hypertext access - Hypertext-Zugriff)-Datei funktioniert mit dem "mod_deflate"-Modul des Servers. Dadurch wird zwar die Serverlast etwas erhöht, aber durch die eingesparte Datenmenge wird dieser Nachteil mehr als ausgeglichen.

Zuerst sollte man prüfen ob das Modul überhaupt auf dem Server verfügbar ist. Hierfür genügt eine kleine php-Datei mit folgendem Inhalt:

<?php
  phpinfo();;
?>

Diese Datei wird auf den Server geladen und danach im Browser aufgerufen. Wird unter den PHP Variablen "_ENV["HTTP_ACCEPT_ENCODING"] gzip, deflate" aufgeführt, so können Sie die Komprimierung mit dieser Methode durchführen.

Die "gzip-Compression" über die .htaccess (hypertext access - Hypertext-Zugriff)-Datei hat den großen Vorteil, dass man lediglich die .htaccess (hypertext access - Hypertext-Zugriff)-Datei wie folgt ergänzen muss:

<IfModule mod_deflate.c>
  <FilesMatch "\.(ico|js|css|html|htm|php|xml|htc)$">
    SetOutputFilter DEFLATE
  </FilesMatch>
</IfModule>

Zuerst wird geprüft ob das Modul überhaupt auf dem Server aktiviert ist. Ist das nicht der Fall müssen leider die vorher aufgeführten Methoden angewendet werden. Danach werden alle Dateien mit der Endung .ico, .js, .css, .html, .htm, .php, .xml und .htc komprimiert und ausgeliefert.

Tipp:
Mit diesem Tool kann man sehr einfach überprüfen, ob die gzip-Compression auch wirklich funktioniert hat und welche Kompressionsrate erreicht wird.

Zum Seitenanfang springen Λ