Hi!
Gucke Dir z.B. <http://schroepl.net/cgi-bin/http_trace.pl? ...> an, und vergleiche mal die komprimierte Version mit der anderen, untern steht die Größe des Content.
Hmm, also wenn ich diese Ergebnisse richtig interpretiere, dann wird der Content mit einem Faktor 15-20 (!!!) komprimiert. Nicht schlecht ;-)
Kann vorkommen wenn Du besonders viele sich wiederholende Teile hast.
Zum ob_gzhandler lässt sich erstaunlich wenig bei google oder im Archiv finden und manchmal sind die Aussagen auch wiedersprüchlich. Daher noch 2 Verständnisfragen:
http://de2.php.net/manual/de/function.ob-gzhandler.php hier steht:
"ob_gzhandler() is intended to be used as a callback function for ob_start() to help facilitate sending gz-encoded data to web browsers that support compressed web pages. Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return it's output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages."
- Ist es richtig, daß wenn der Client-Browser gzip nicht unterstützt die Seite unkomprimiert übertragen wird?
ja, aber eigentlich unterstützt jeder aktuelle Browser. Probleme können aber Firewalls darstellen, wie Norton Internet Security, hier wird die entsprechende Zeile von der Firewall aus dem Request-Header entfernt. http://schroepl.net/cgi-bin/http_trace.pl, hier siehst Du ja auch was Dein Browserr an den Server sendet, mein Mozilla sendet zum Beispiel bei jedem Request folgende Zeile:
Accept-Encoding: gzip,deflate,compress;q=0.9
Dann weiß der Server dass der Client gzip versteht und kann komprimieren.
- Genügt es ob_start("ob_gzhandler") einmal in der index-Datei aufzurufen oder müssen die includeten Dateien explizit gzipt werden? Mir ist nicht ganz klar wann komprimiert wird, also vor oder nach dem "Zusammensetzen" der Datei.
Dazu musst Du Dir einfach die Arbeitsweise eines PHP-Scriptes überlegen. Normalerweise startet ein Client eine Request, der Webserver erkennt an (normalerwiese) an der Endung .php dass er den Request an den PHP-Interpreter übergeben soll, dieser parst das entsprechende PHP-Script, führt den darin enthaltenen PHP-Code aus, dazu gehört auch dass bei includes eien Datei eingebunden und ausgeführt wird, normalerweise schreibt der Interpreter dann die Ausgabe die durch das PHP-Script erzeugt in einen Ausgabepuffer, der nach und nach zurück an den Client übertragen wird. Verwendet man allerdings ob_start(), wird die Ausgabe gepuffert, das heißt der Ausgabepuffer wird nicht an den Client übertragen, am Ende kannst Du entscheiden was mit den Daten pasieren soll. ob_start("ob_gzhandler") bewirkt dann halt, dass die Daten am Ende dann komprimiert werden, und dann an den Client übertragen werden. Das muss Du einfach aus Sicht des Scriptes sehen, welches aufgerufen wurde, dieses kann einbinden was es will, die Komprimierung bezieht sich nur auf die Ausgabe dieses Scriptes.
| | ... jetzt sind es sicherlich 70 % weniger und das Laden geht entsprechend schneller, und Du sparst Traffic...
Schamlos untertrieben. In meinem Fall ca. 95% ;-)
Siehe oben, damit habe ich glaube ich bei einer Stichprobe 78 KB gemessen, will das aber nicht beschwören.
Stimmt, mit dem Schroepl-Tool bekomme ich auch Werte um die 80 KB.
Die Größe der Scripte ist unerheblich, speicher den Quelltext der HTML-Ausgabe und Du wirst sehen dass das stimmt!
Grüße
Andreas