Komprimierte HTML Dateien mit PHPMit Hilfe von PHP und der Gzip Kompression kann man HTML Dateien komprimieren, und somit Transfervolumen und auch Ladezeit sparen.

Damit PHP das Gzip Verfahren unterstützt muss es mit der Option
--with-zlib
installiert worden sein. Fragen Sie hierzu einfach ihren Webhoster, oder probieren Sie es aus.

Mit Hilfe der output buffering Funktionen ob_* wird der HTML-Code nicht direkt an Client (Browser) gesendet, sondern in einen dynamisch mitwachsenden Puffer gehalten.

<?php
ob_start();
print "Hallo !!!";
?>

Nun zu den Client/Server Hintergründen:
Wenn der Browser (Client) eine Anfrage an den Server stellt sieht das so aus:

GET / http/1.1\r\n
Host: www.devmag.net\r\n
\r\n\r\n

(\r\n steht hier für RETURN – Zeilenwechsel)

Wenn ihr Browser nun aber gzip-Encoding (also die gzip-Kompression unterstützt) würde er einer Anfrage diese Zeile mit Anfügen:

Accept-Encoding: gzip\r\n

Sie können das mit ihrem Browser ganz einfach testen, in dem
sie folgenden PHP-Code ausführen:

<?php
print getenv("HTTP_ACCEPT_ENCODING");
?>

Wird nun ein String mit dem Wort “gzip” ausgegeben versteht ihr
Browser die komprimierten Daten.
Damit nun die HTML-Daten komprimiert werden können übergeben
wir dem vorhin erwähnten ob_start() den Parameter für die
Funktion ob_gzhandler(). Über diesen Handler wird dann auf den Puffer zurückgegriffen. So ist es z.B. möglich, das Sie mehrere Puffer für verschiedene Seiten erstellen, oder bestimmte Codeteile in einen bestimmten Puffer packen.
Das sieht dann so aus:

<?php
ob_start("ob_gzhandler");
print "Ich bin komprimiert";
?>


Ihr Browser sollte nach dem Aufruf nun ganz normal "Ich bin
komprimiert" ausgeben.
Haben sie aber einen Browser der die gzip-Komprimierung nicht
unterstützt oder "sitzen hinter" einem Proxy-Server dürfte
keine Ausgabe zu ihnen gelangt sein.
Um nun auf diese Clients Rücksicht zu nehmen prüfen wir vor dem
komprimieren ob in der Variable HTTP_ACCEPT_ENCODING das
bekannt gzip vorhanden ist.
Wir machen daraus eine eigene Funktion Namens my_obstart() :

<?php
function my_obstart() {
$encode = getenv("HTTP_ACCEPT_ENCODING");
if(ereg("gzip",$encode)) {
ob_start("ob_gzhandler");
} else {
ob_start();
}
}
my_obstart(); // Führt die Funktion nun aus
print " hallo !";
print " wir sind komprimiert oder doch nicht?! ";
?>


Sie können nun diese Funktion in ein anderes File speichern und bei bedarf per include laden…
Es funktioniert auch, wenn keine print oder echo Befehle sondern das PHP nur geschlossen wird z.b.
<?php
include("myobstart.php");
my_obstart();
?>
<HTML>
<TITLE>TESTPAGE</TITLE>
<body>
TEST TEST TEST
</body>
</html>
<? // hier können wieder PHP Befehle stehen
// z.b. mysql_close();
?>

Es gibt ein Script zum Download, das nach dem selben Prinzip funktioniert, aber zusätzlich sieht man noch wieviel komprimiert worden ist und man hat die Möglichkeit den KompressionsLevel (0-9) einzustellen.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: