Seite 1 von 2
[erledigt]gzip? - wie geht das
Verfasst: 18.11.2006 14:48
von Ambience
Hallo,
kennt sich jemand mit gzip aus?
Mein vorhaben: Ich möchte gerne soweit es der Browser erlaubt meine Seiten als gzip senden.
Nun, wie mache ich das? bzw. wie frage ich ab ob gzip unterstützt wird, und schicke die seite dann gzip komprimiert.
Vielen Dank.
Verfasst: 18.11.2006 15:03
von Olli Oberhausen
Ein gutes beispiel findest du in der page_header.
Code: Alles auswählen
$do_gzip_compress = FALSE;
$phpver = phpversion();
$useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');
if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
{
if ( extension_loaded('zlib') )
{
ob_start('ob_gzhandler');
}
}
else if ( $phpver > '4.0' )
{
if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
{
if ( extension_loaded('zlib') )
{
$do_gzip_compress = TRUE;
ob_start();
ob_implicit_flush(0);
header('Content-Encoding: gzip');
}
}
}
und page tail
Code: Alles auswählen
if ( $do_gzip_compress )
{
//
// Borrowed from php.net!
//
$gzip_contents = ob_get_contents();
ob_end_clean();
$gzip_size = strlen($gzip_contents);
$gzip_crc = crc32($gzip_contents);
$gzip_contents = gzcompress($gzip_contents, 9);
$gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $gzip_contents;
echo pack('V', $gzip_crc);
echo pack('V', $gzip_size);
}
Verfasst: 18.11.2006 15:07
von Ambience
und wie könnte man dann überprüfen ob das ganze auch wirklich erfolgt ist, und komprimiert wurde?
Verfasst: 18.11.2006 15:11
von Olli Oberhausen
z.b. am header.
Content-Encoding: gzip
Ausserdem merkt man es meistens daran, dass sich die seite nicht langsam aufbaut (header, body, footer) sondern am stück erscheint.
Olli
Verfasst: 18.11.2006 15:30
von Ambience
und wie kann ich mir den gesendetet header ausgeben lassen?
und muss ich bei dem code aus der page_header das
auf TRUE setzen?
Verfasst: 18.11.2006 15:37
von Olli Oberhausen
Nein, auf keinen fall...
Das wird auf true gesetzt wenn die seite mit gzcompress komprimiert wird.
Dann wird die seite erst im 2. teil komplett gezippt und an den browser gesendet.
Olli
Verfasst: 18.11.2006 15:55
von Ambience
Ambience hat geschrieben:und wie kann ich mir den gesendetet header ausgeben lassen?
Verfasst: 18.11.2006 16:09
von Olli Oberhausen
In dem du dir die Web Developer toolbar für den Firefox installiert
Olli
Verfasst: 18.11.2006 16:12
von Ambience
hab aber nur IE. halte nix von den anderen browsern.
Verfasst: 18.11.2006 16:17
von Olli Oberhausen
Ambience hat geschrieben:hab aber nur IE. halte nix von den anderen browsern.
Gibts auch für den ie ->
www.google.de
Den rest deines statements solltest du dir noch mal überlegen.
Bevors OT geht - ich will keine Grundsatzdiskussion anfangen.
Olli