Wolfgang: gzip mod_expires.c htaccess

Hi,

kann mir mal jemand was zu .htaccess erklären?

Da steht jetzt folgendes (für *.html.html und *.html.gz) drinnen:

Options +Multiviews
AddEncoding gzip .gz

Sollte doch schon reichen, und es ist dann richtig AddType text/html .gz wegzulassen?

Im Archiv hab ich noch was gefunden, aber den Zusammenhang nicht ganz verstanden:

<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresByType text/css "now plus 1 month"
</IfModule>

Hat doch mit gzipten css-files nichts zu tun oder doch?

thx,
Wolfgang

  1. Moin!

    Im Archiv hab ich noch was gefunden, aber den Zusammenhang nicht ganz verstanden:

    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "now plus 1 month"
    </IfModule>

    Hat doch mit gzipten css-files nichts zu tun oder doch?

    Das hat miteinander überhaupt nichts zu tun, weil bei gezippten Files der Mime- Typ ein ganz anderer ist.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hi,

      <IfModule mod_expires.c>
      ExpiresActive On
      ExpiresByType text/css "now plus 1 month"
      </IfModule>

      Hat doch mit gzipten css-files nichts zu tun oder doch?

      Das hat miteinander überhaupt nichts zu tun, weil bei gezippten Files der Mime- Typ ein ganz anderer ist.

      Also .css.gz? Es war nicht im Archiv, sondern google, ich komm aber mit dem Zusammenhang nicht ganz klar.
      http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&selm=b2mkna.8o.1%40news.christoph.schneegans.de

      Was passiert bei dem Eintrag? Da wird abgefragt ob der Server mod_expires.c hat, wenn ja dann wird es eingeschaltet, und gibt einen Zeitpunkt in 1 Monat aus. Wer richtet sich danach, Browsercache oder Proxyserver?

      cu,
      Wolfgang

      1. Moin!

        Das hat miteinander überhaupt nichts zu tun, weil bei gezippten Files der Mime- Typ ein ganz anderer ist.
        Also .css.gz? Es war nicht im Archiv, sondern google, ich komm aber mit dem Zusammenhang nicht ganz klar.

        Komplett war das wohl so zu finden:

        Options +MultiViews

        <IfModule mod_expires.c>
              ExpiresActive On
              ExpiresByType text/css "now plus 1 month"
          </IfModule>

        <IfModule mod_mime.c>
              AddEncoding gzip .gz
          </IfModule>

        • Options Multiviews muss hier aktiviert werden (explizit, siehe Apache-Dokumentation)

        Wenn das Modul expires geladen werden konnte:
        Der Ablauf der Dateien im css-Format wird im HTTP-Header auf jetzt + 1 Monat gesetzt.

        Ist das mime- Modul geladen:
            Es wird der encoding- Typ gzip für alle Dateien gesetzt, die auf .gz enden.

        Was bewirkt das?

        Unter der Voraussetzung, daß style.css und style.css.gz existieren wird an die Browser, die mit (gzip-) komprimierten Daten klarkommen, die Datei style.css.gz gesendet: diese packt der Browser aus. Alle anderen Benutzeragenten bekommen die unkomprimierte Datei.

        Der Webserver sendet im http-header die Information, wann die Datei abläuft. Dem entspricht zum Beispiel das http-equiv "expires". Dieser besagt, wann die datei abläuft, das wendet sich an Browser und Proxy. Warum sollten die eine abgelaufene Datei aufheben?

        Welchen Content- Typ der Apache hier annimmt kann ich nicht sagen, bei mir nimmt er den Server- Standard (text/html). Jedenfalls nimmt er nicht: "application/gzip". Wichtig ist das zu wissen, weil genau davon abhängt, ob er die Direktive zum Senden des expire- header anwendet. Ach ja untern findest Du auch, daß der Server zwischen Content-Type und Encoding-Type unterscheidet. Logisch ist hinsichtlich der Unterscheidung ob expire senden oder nicht die Entscheidung für den Content-Type.

        einige Mime-Types: http://selfhtml.teamone.de/diverses/mimetypen.htm

        Was der Server letztendlich aussendet kannst Du nach Aktivierung der Module und Eintrag der Einstellungen (+ Neustart Apache) herausfinden, indem Du mit wget und der Debug- Option  (-d) die Daten vom Server holst. Dann bekommst Du auch die HTTP-Header angezeigt:

        Unter Windows sieht das etwa so aus:

        G:>wget http://banner.fastix.de/hosts.gz -d
        DEBUG output created by Wget 1.8.1+cvs on Windows.

        --17:47:43--  http://banner.fastix.de/hosts.gz
                   => `hosts.gz'
        Resolving banner.fastix.de... done.
        Caching banner.fastix.de => 212.227.118.93
        Connecting to banner.fastix.de[212.227.118.93]:80... connected.
        Created socket 732.
        Releasing 007C48F0 (new refcount 1).
        ---request begin---
        GET /hosts.gz HTTP/1.0
        User-Agent: Wget/1.8.1+cvs
        Host: banner.fastix.de
        Accept: */*
        Connection: Keep-Alive

        ---request end---
        HTTP request sent, awaiting response... HTTP/1.1 200 OK
        Date: Tue, 04 Nov 2003 16:47:44 GMT
        Server: Apache/1.3.29 (Unix)
        Last-Modified: Tue, 04 Nov 2003 14:12:13 GMT
        ETag: "14d801f-1053a-3fa7b3bd"
        Accept-Ranges: bytes
        Content-Length: 66874
        Connection: close
        Content-Type: text/plain
        Content-Encoding: x-gzip

        Length: 66,874 [text/plain]

        100%[====================================>] 66,874        79.55K/s

        Closing fd 732
        17:47:45 (79.55 KB/s) - `hosts.gz' saved [66874/66874]

        Natürlich hab ich hier an der httpd.conf geändert. Ich war zu a)  zu faul und b) auf dem Server darf ich gar nicht.

        -------
        Fazit: Sind die Einstellungen so getriffen, wie oben angenommen und der Browser akzeptiert komprimierte Dateien, dann wird wohl der expire- header wegen des Content-types mitgesendet, obwohl der Encoding- Typ zweifelsfrei ein anderer ist.

        fastix®

        http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&selm=b2mkna.8o.1%40news.christoph.schneegans.de

        Was passiert bei dem Eintrag? Da wird abgefragt ob der Server mod_expires.c hat, wenn ja dann wird es eingeschaltet, und gibt einen Zeitpunkt in 1 Monat aus. Wer richtet sich danach, Browsercache oder Proxyserver?

        cu,
        Wolfgang

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. Hi!

          Wenn das Modul expires geladen werden konnte:
          Der Ablauf der Dateien im css-Format wird im HTTP-Header auf jetzt + 1 Monat gesetzt.

          Der Webserver sendet im http-header die Information, wann die Datei abläuft. Dem entspricht zum Beispiel das http-equiv "expires". Dieser besagt, wann die datei abläuft, das wendet sich an Browser und Proxy. Warum sollten die eine abgelaufene Datei aufheben?

          Danke, also ExpiresByType text/css, type/css bezieht sich hier auf den Content-Type, auf eine x.css.css und auch x.css.gz. Dann Ablauf in 1 Monat, also erstmal aufheben.

          In deiner Ausgabe von wget war aber wohl kein expire-header, oder hab ich was übersehen?

          Und besteht doch ein Zusammenhang mit gzip, soll der Verbleib in proxy und cache für eine x.css.gz erst möglich werden, oder wäre es für gz-files eigentlich egal? Warum könnte es dem Autor des googletext wichtig gewesen sein?

          cu,
          Wolfgang

          1. Moin!

            Danke, also ExpiresByType text/css, type/css bezieht sich hier auf den Content-Type, auf eine x.css.css und auch x.css.gz. Dann Ablauf in 1 Monat, also erstmal aufheben.

            Ja. Das denke ich auch. Dennoch prüfe das nach!

            In deiner Ausgabe von wget war aber wohl kein expire-header, oder hab ich was übersehen?

            Ich hab doch geschrieben, ich sei zu faul die beschriebenen Einstellungen zu testen... Ich wollte nur zeigen, was rauskommt, wenn ich eine gz-komprimierte Date runterlade. Und es gab einen prompten Unterschied zwischen Content-type und Encoding-Type...

            Und besteht doch ein Zusammenhang mit gzip, soll der Verbleib in proxy und cache für eine x.css.gz erst möglich werden

            Das ist zu vermuten. Wenn ich dem Apache sage: hör mal: etwas ist im Behälter/Eimer (Encoding- Typ) und er sieht einen, dann wird er ihn vermutlich zum Untersuchen des Inhalts rumdrehen, weil er weiss: der Content-Typ ist ein anderer (flüssig/Wasser oder fest/Sand)-  Scheinbar aber sendet er den richtigen expire header (Haltbarkeit...) in Abhängigkeit vom vermuteten Content-Type (Herausfinden durch Weglassen von .gz und neues Überprüfen).

            Wenn der Apache jedoch in dem Glaube gelassen wird .gz sei Content-Type "application/gzip" - dann wird er den Inhalt nicht untersuchen, sondern ohne Untersuchung zum Browser senden, der dann wieder das Ausführen/Speichern anbietet. Ein expire-header ist dann mit Sicherheit nicht dabei, wenn er nicht für den mime-Typ "application/gzip" festgelegt wurde...

            Wie gesagt: treffe die Einstellungen und hole Dir die Dateien mal vom Server mit wget- das hat genug Optionen, Du kannst es getrost Mozilla spielen lassen. Das Ergebnis würde mich auch interessieren- gegenwärtig aber nicht sosehr, als daß ich Lust hätte einen Server umzukonfigurieren.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.