gepacktes

Da ich ja noch immer mein pervers langes Kalenderarchiv betreibe, was mit einer Dateigröße von 144KB daherkommt, hab ich mich entschlossen zumindest diese Seite vor der Übertragung zu gzippen. Was die Länge auf ca. 5KB runterbringt. Das Rendern inkl. zippen dauert nur unwesentlich länger, dafür ist das Ladevorgang sehr viel fixer und ich hab weniger Traffik.

Das erste Codeframent prüft, ob der Browser GZIP akzeptiert und schickt einen entsprechenden HTTP Header.

if (strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) {
  header("Content-Encoding: gzip");
  echo "x1fx8bx08x00x00x00x00x00";
}

Dieses Fragment nimmt, falls GZIP akzeptiert wird, die Kompression vor und gibt die Seite aus.

if (strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) {
  print gzcompress(
    template_replace_keys(
      $content, $site_template ),
      9 );
} else {
  print template_replace_keys( $content, $site_template );
}

Ja, so einfach geht das. Könnte man sich das nicht mal zu Herzen nehmen?!

2 Gedanken zu “gepacktes

  1. Wie wär’s mit nem simplen ob_start(‘ob_gzhandler’)? Ansonsten könntest du dir das manuelle Schreiben des gz-Headers sparen indem du gzencode() statt gzcompress() verwendest.

  2. hmmm ja, ich leses gerade ob_gzhandler() testet und schickt. Das sit dann natürlich noch einfacher.

Die Kommentarfunktion ist geschlossen.