Ralph: gzip Komprimierung aktivieren

Hallo,

ich möchte meine Website gern gzip komprimiert ausliefern, wenn dies vom Browser unterstützt wird. Allerdings scheint dies nicht zu funktionieren. Ich habe auch gelesen das es an Zonealarm liegen kann, daher hatte ich die Firewall einmal deaktiviert, aber es gab keinen Unterschied in der Seitengröße.
Also was mache ich falsch?

Hier einige Daten:

Server

Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9

ZLib Support: enabled
Stream Wrapper support: compress.zlib://
Stream Filter support: zlib.inflate, zlib.deflate
Compiled Version: 1.2.3
Linked Version: 1.2.3

zlib.output_compression: Off Off
zlib.output_compression_level: -1 -1
zlib.output_handler: no value no value

PHP

am Anfang der PHP Datei steht das:

if(extension_loaded('zlib') && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))  
	ob_start('gz_handler');  
else  
	ob_start();

header():

header('Content-type: text/html; charset=UTF-8');  
header('Vary: Accept-Encoding');  
header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0');  
if(strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))  
	header('Content-Encoding: gzip');	  
else  
	header('Pragma: No-cache');	  
header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');  
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');

am Ende das:

ob_end_flush();

Headers

Antwort-Header:

HTTP/1.1 200 OK
Date: Mon, 15 Feb 2010 07:32:12 GMT
Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
X-Powered-By: PHP/5.2.9
Expires: Mon, 15 Feb 2010 07:32:12 GMT
Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: No-cache
Vary: Accept-Encoding
Last-Modified: Mon, 15 Feb 2010 07:32:12 GMT
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

Anfrage-Header:

GET /index.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://localhost/index.php
If-Modified-Since: Mon, 15 Feb 2010 07:22:08 GMT
Cache-Control: max-age=0

MFG
Ralph

  1. Moin!

    zlib.output_compression: Off Off
    zlib.output_compression_level: -1 -1
    zlib.output_handler: no value no value

    Könnte gut sein, dass dies die Ursache ist.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Laut php.net ist dies nicht die Ursache, da

      "You cannot use both ob_gzhandler() and zlib.output_compression. Also note that using  zlib.output_compression is preferred over ob_gzhandler()."

      Also denke ich das es iO ist, wenn diese Off ist.

      1. Hallo Ralph,

        Also note that using  zlib.output_compression is preferred over ob_gzhandler().

        warum willst Du nicht die bevorzugte Methode anwenden?

        Freundliche Grüße

        Vinzenz

        1. Ganz einfach - da man sich dadurch im Regelfall eine Configänderung am Server erspart.

          1. Moin!

            Ganz einfach - da man sich dadurch im Regelfall eine Configänderung am Server erspart.

            Was für eine wahnsinnig gute Idee.

            Versuche mal:
            <?php
            ini_set('zlib.output_compression', 1);
            ...

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
            1. Jo ist es auch, da nicht jeder Provider willens ist, an der Config rumzuschrauben bzw. Module zu installieren/aktivieren. Es soll auch Nutzer geben, die einen Managed Server nutzen oder popligen Webspace, bei denen sie an der Config nix drehen können ;) Und deshalb gehe ich diesen Schritt.

              Aber es liegt daran, dass meine Browser keinen HTTP_ACCEPT_ENCODING senden. Ich denke mal auf meinem System schießt da irgendwas quer. Hab jetzt die Firewall, Antivirenproggs etc ausgeschalten, aber dieser Header wird immer noch nicht übermittelt. In der FF Config ist es auch erlaubt, also gehen mir langsam aber sicher die Ideen aus.

  2. Anscheinend ist die $_SERVER['HTTP_ACCEPT_ENCODING'] nicht gesetzt. Daher geht er immer den unkomprimierten Weg. Hat jemand Idee warum das so ist? Hab es jetzt mit dem FF 3.6 unf IE7 probiert. In beiden Fällen ist die Variable leer.