Im dritten Teil der Reihe zum Thema Ladezeitenoptimierung geht es um das Thema GZip. GZip verringert die Übertragungsgröße durch das Komprimieren von Informationen bei der Auslieferung durch den Webserver. Dieses Verfahren wird seit der HTTP Version 1.1 unterstützt und ist somit in allen gängigen Browsern verfügbar. Um GZip nutzen zu können, muss das entsprechende Paket (bei einem Apache Webserver ist dies mod_gzip bzw. mod_deflate) vorhanden sein und aktiviert werden.
Um GZip zu nutzen muss folgender Code in die .htacess Datei eingefügt werden:
<Location /> SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI \ \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \ \.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary </Location>
Dieser Ausschnitt bewirkt, dass alle Dateien bis auf Bilder (.gif, .jpg, .png) und Dateien mit der Endung .exe, .gz, .zip etc. komprimiert ausgeliefert werden. Damit kann eine Reduzierung des Transfers um bis zu 50% erreicht werden.
Ein Problem haben die Webseitenbetreiber, die auf Grund ihres Hostingvertrages dieses mod_gzip Modul nicht nutzen können. Doch auch hier gibt es eine praktikabele Lösung: die PHP-Funktion ob_gzhandler().
Durch einbinden des folgenden Quellcodes in eine Datei wird diese ebenfalls GZip-Komprimiert ausgeliefert.
<?php
if(!ob_start("ob_gzhandler")) ob_start();
?>
Um diesen hilfreichen Quellcode nicht in jede Eurer Dateien auf dem Server kopieren zu müssen, gibt der PHP Performance Blog einen guten Hinweis. Mit Hilfe des folgenden Codes könnt ihr Euren Server über die .htaccess zwingen jede Datei mit diesem Code zu versehen. Dazu legt ihr eine PHP-Datei an, die nur den obenstehenden Code enthält (hier: gzip-enable.php).
<FilesMatch "\.(txt|html|htm|php)"> ForceType application/x-httpd-php php_value auto_prepend_file /the/full/path/gzip-enable.php </FilesMatch>
Auf diesem Weg ist es für alle gängigen Browser möglich die Ladezeiten erheblich zu reduzieren.
Weitere Beiträge aus dieser Reihe:
- Einleitung: Wie Ladezeiten verkürzt werden können
- Teil 2: Komprimierung von CSS und Java Script
- Teil 3: Komprimierung der auszuliefernden Inhalte mit GZip
- Teil 4: Optimiertes Nutzen von CSS durch Beschränkung in der Strukturtiefe
- Teil 5: Beschränkung der HTTP Requests
- Teil 6: Laden von Elementen auf den Viewport des Nutzers beschränken (intelligentes Nachladen)
- Teil 7: iFrames richtig nutzen (Nachladen externer Inhalte)
- Teil 8: Cachingerfolg erhöhen durch Auslagerungen
- Teil 9: CSS Sprites nutzen
Verwandte Themen:


