Michael Jendryschik: Dokumente einer Website komprimiert ausliefern

Hallo zusammen!

Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de komprimiert ausliefern. Wie mache ich das am besten?

Vermutlich suche ich eine elegante PHP-Lösung, die sich in folgenden Schnipsel integrieren lässt bzw. sich daran nicht stört.

if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' && isset($_SERVER['HTTP_ACCEPT']) && preg_match('|application/xhtml+xml(?!\s*;\s*q=0)|', $_SERVER['HTTP_ACCEPT'])) {
    header('Content-Type: application/xhtml+xml; charset=iso-8859-1');
    header('Vary: Negotiate,Accept');
    $xml = true;
} else {
    header('Content-Type: text/html; charset=iso-8859-1');
    header('Vary: Negotiate,Accept');
}

Oder ist eine Lösung bestehend aus einigen Zeilen in der .htaccess möglich und eleganter?

Gruß,

MI

--
Einführung in XHTML, CSS und Webdesign: http://jendryschik.de/wsdev/einfuehrung/
Disclaimer? Eine Stellungnahme zum Thema : http://jendryschik.de/misc/disclaimer
Was ist ein guter Standard?   :   http://jendryschik.de/wsdev/trans/designguide/
  1. Hi,

    Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de komprimiert ausliefern. Wie mache ich das am besten?

    indem Du das dem Server überlässt, der kann das nämlich ganz alleine.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de komprimiert ausliefern. Wie mache ich das am besten?

      indem Du das dem Server überlässt, der kann das nämlich ganz alleine.

      Du meinst damit vermutlich nicht, dass ich einfach überhaupt nichts tun und alles so belassen soll, wie es jetzt ist, oder?

      Gruß,

      MI

      --
      Einführung in XHTML, CSS und Webdesign: http://jendryschik.de/wsdev/einfuehrung/
      Disclaimer? Eine Stellungnahme zum Thema : http://jendryschik.de/misc/disclaimer
      Was ist ein guter Standard?   :   http://jendryschik.de/wsdev/trans/designguide/
      1. Hi,

        Du meinst damit vermutlich nicht, dass ich einfach überhaupt nichts tun und alles so belassen soll, wie es jetzt ist, oder?

        nun, ich kenne Deinen Server nicht. Auf jeden Fall solltest Du PHP aus dem Spiel lassen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          Du meinst damit vermutlich nicht, dass ich einfach überhaupt nichts tun und alles so belassen soll, wie es jetzt ist, oder?

          nun, ich kenne Deinen Server nicht.

          Ich auch nicht. ;-)

          Es ist jedenfalls ein Apache, den ich per .htaccess beschränkt konfigurieren kann. Meine Site ist bei Domainfactory gehostet.

          Auf jeden Fall solltest Du PHP aus dem Spiel lassen.

          Warum?

          Gruß,

          MI

          --
          Einführung in XHTML, CSS und Webdesign: http://jendryschik.de/wsdev/einfuehrung/
          Disclaimer? Eine Stellungnahme zum Thema : http://jendryschik.de/misc/disclaimer
          Was ist ein guter Standard?   :   http://jendryschik.de/wsdev/trans/designguide/
          1. Hi,

            nun, ich kenne Deinen Server nicht.
            Ich auch nicht. ;-)

            oh :-)

            Es ist jedenfalls ein Apache, den ich per .htaccess beschränkt konfigurieren kann.

            Servermodule müssen bereits beim Start eingebunden werden, also in der httpd.conf.

            Auf jeden Fall solltest Du PHP aus dem Spiel lassen.
            Warum?

            Weil es wenig Sinn macht, viel Aufwand in eine Funktion zu stecken, die der Server bereits beherrscht - und ohnehin ausführen wird, ob Du nun schon etwas komprimiert hast oder nicht.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo,

              Es ist jedenfalls ein Apache, den ich per .htaccess beschränkt konfigurieren kann.

              Servermodule müssen bereits beim Start eingebunden werden, also in der httpd.conf.

              Die Dokumente werden also entweder bereits komprimiert übertragen oder, falls nicht, ich könnte es nicht ändern? Kann ich herausfinden, ob Dokumente komprimiert ausgeliefert werden?

              Gruß,

              MI

              --
              Einführung in XHTML, CSS und Webdesign: http://jendryschik.de/wsdev/einfuehrung/
              Disclaimer? Eine Stellungnahme zum Thema : http://jendryschik.de/misc/disclaimer
              Was ist ein guter Standard?   :   http://jendryschik.de/wsdev/trans/designguide/
              1. Hi,

                Die Dokumente werden also entweder bereits komprimiert übertragen

                nicht "bereits". Der Server kann ja nicht schon komprimieren, bevor Du irgendwas in den Outstream geschrieben hast :-)

                oder, falls nicht, ich könnte es nicht ändern?

                Providerwechsel ist, falls dieser eine eventuell nötige Änderung ablehnt, eine Option.

                Kann ich herausfinden, ob Dokumente komprimiert ausgeliefert werden?

                Den Reponse-Header auswerten; der Server sollte in seiner Identifikation "mod_gzip" o.ä. nennen. Alternativ kannst Du mit einem eigenen Client, der einen hinreichend günstigen Accept-Encoding-Header ausliefert, einen Response-Body ansehen: Wenn er lesbar ist, ist er offenbar nicht komprimiert. Vorsicht: Der Server (bzw. das Modul) kann bei jedem Request entscheiden, nicht zu komprimieren; etwa weil es keinen Sinn ergibt.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo, Cheatah!

                  Providerwechsel ist, falls dieser eine eventuell nötige Änderung ablehnt, eine Option.

                  das hier auch?
                  http://schroepl.net/projekte/gzip_cnc/index.htm

                  freundl. Grüsse aus Berlin, Raik

                2. Hallo,

                  Kann ich herausfinden, ob Dokumente komprimiert ausgeliefert werden?

                  Den Reponse-Header auswerten; der Server sollte in seiner Identifikation "mod_gzip" o.ä. nennen. Alternativ kannst Du mit einem eigenen Client, der einen hinreichend günstigen Accept-Encoding-Header ausliefert, einen Response-Body ansehen: Wenn er lesbar ist, ist er offenbar nicht komprimiert. Vorsicht: Der Server (bzw. das Modul) kann bei jedem Request entscheiden, nicht zu komprimieren; etwa weil es keinen Sinn ergibt.

                  Bei http://www.delorie.com/web/headers.cgi?url=http%3A%2F%2Fjendryschik.de%2Fwsdev%2Ftrans%2Fdesignguide%2Fessay sollte es Sinn ergeben, es ist aber keine Spur von mod_gzip zu sehen. Ich werde mal bei Domainfactory anfragen, wie's damit aussieht.

                  Danke,

                  MI

                  --
                  Einführung in XHTML, CSS und Webdesign: http://jendryschik.de/wsdev/einfuehrung/
                  Disclaimer? Eine Stellungnahme zum Thema : http://jendryschik.de/misc/disclaimer
                  Was ist ein guter Standard?   :   http://jendryschik.de/wsdev/trans/designguide/
  2. Hallo Michael,

    Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de
    komprimiert ausliefern. Wie mache ich das am besten?

    »Am besten« machst du das mit mod_gzip. Wenn das nicht geht, solltest
    du dich an http://de.php.net/zlib halten. Da etwas eigenes zu
    schreiben halte ich nicht fuer sinnvoll. Wenn du zusaetzliche Tests
    brauchst, kannst du die ja implementieren, aber trotz allem wuerde
    ich PHP das komprimieren ueberlassen.

    Grüße,
     CK

    --
    [remote-signature:http://www.defunced.de/cgi-bin/signature.pl]
    http://wwwtech.de/
  3. Hallo Michael.

    Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de komprimiert ausliefern. Wie mache ich das am besten?

    Eine Lösung, wie es ohne PHP und ganz automatisch geht, findest du hier beschrieben:
    </archiv/2003/8/54645/#m304951>

    Freundschaft!
    Siechfred

    --
    Punk's not dead: http://www.siechfreds-welt.de/badreligion.shtml
    Dankbarkeit, man spürt sie ja so selten bei den Menschen, und gerade die Dankbarsten finden nicht den Ausdruck dafür, sie schweigen verwirrt, sie schämen sich und tun manchmal stockig, um ihr Gefühl zu verbergen. (Stefan Zweig)
    1. Hallo,

      Eine generelle Frage: Ich möchte meine Dokumente auf jendryschk.de komprimiert ausliefern. Wie mache ich das am besten?

      Eine Lösung, wie es ohne PHP und ganz automatisch geht, findest du hier beschrieben:
      </archiv/2003/8/54645/#m304951>

      Davon würde ich abraten. Er benutzt ja jetzt schon MultiViews. Die unter </archiv/2004/4/78900/#m456670> genannten Probleme treten somit jetzt schon jetzt überall dort auf, wo dokumentinterne Links verwendet werden. Wenn man mit einem standardkonformen Browser Link »Zum Seitenanfang« wählt, wird das Dokument mit der realen Content-Location-Adresse (hinten mit .xhtml dran) neu geladen. Mit GZip würde es erst richtig spaßig, wenn Leute anfangen, die Dokumente mit dokument.xhtml.gz#anker zu verlinken. Hinzu kommt, dass dokument.xhtml momentan (eigentlich sinnigerweise, andererseits sollte die URL ungültig sein) mit 301 zu dokument umgeleitet wird. Das löst das Problem der Verlinkung von .xhtml(.gz), aber macht dokumentinterne Anker funktionsunfähig, weil beim Umleiten der Anker nicht beachtet werden kann...

      Mathias