yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Dateien komprimieren



Das Komprimieren funktioniert mit einem Paket für PHP, welches gzip heisst. Dies ist auf den meisten Internetservern installiert. Einfach mal deinen Hoster fragen.

Bevor mit dem Script selber loslegen kann, muss man kurz ein bisschen Theorie verstehen: Denn man kann zwar recht einfach komprimiert Internetseiten an den Benutzer senden, aber der Besucher muss sie ja auch wieder dekomprimieren können.
Unterstützt der Browser des Besuchers die Datei(de)komprimierung, so äußert er das in der Anfrage, die er an die Seite sendet, um diese zu empfangen:
Code:
GET HTTP/1.1
Host: www.yubb.de
Accept-Encoding: gzip

Dies ist ein kleiner Ausschnitt der Anfrage an eine Seite: Man sieht, dass der Host www.yubb.de über HTTP (das Internetprotokoll) angefragt wird. Desweiteren kann dieser Browser mit komprimierten Dateien umgehen, was man an der Zeile Accept-Encoding: gzip erkennt.
Nur, wenn ein Browser die Dateikomprimierung unterstützt, steht unter "Accept-Encoding" auch der Eintrag "gzip".




So, nun haben wir die Theorie, nun kann man mit dem Script selber starten:
PHP-Datei:
1
2
3
4
5
6
7
8
<?php 
$encode
=$_SERVER['HTTP_ACCEPT_ENCODING'];
if(
ereg("gzip",$encode)) {
    
ob_start("ob_gzhandler");
} else {
    
ob_start();
}
?>

Diesen kleinen Codeteil an den Anfang der zu komprimierenden Seiten und die Seiten werden gepackt an den Besucher versandt.

Zuerst wird erstmal die Zeile Accept-Encoding aus der Anfrage des Browsers ausgelesen und der Variable $encode zugewiesen.
Nun wird die Variable auf ein Vorkommnis des Begriffs "gzip" durchsucht. Ist dieser vorhanden, so kann man den Dateiinhalt komprimiert senden, ansonsten wird dieser unkomprimiert verschickt.

Mit Hilfe von ob_start() wird ein Ausgabepuffer erstellt. Das heisst, der Dateiinhalt wird nicht sofort ausgegeben, sondern in den Puffer geschrieben. Erst, wenn die Seite komplett ist, wird sie losgesandt. Je nach dem, ob der Begriff "gzip" gefunden wurde, wird ein Puffer gestartet: Bei Unterstützung wird der Puffer mit Komprimierung gestartet, ansonsten der Puffer ohne Komprimierung. So schließt man keine Besucher aus, weil man seine Dateien ausschließlich komprimiert sendet.

Dies ist eine sehr einfache Variante, Dateien zu komprimieren. Es gibt jedoch einige erweiterte Funktionen, bei denen man die Stärke der Komprimierung einstellen kann und eine genauere Verzweigung der einzelnen Komprimiermodi hat. Ein solchs Script findet man auf der Seite von www.robwei.de.


Geschrieben von Phil Marx am 18.06.2004 (7851x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren