Helmut: Frage zu "expires" im Header

Hallo! Ich habe wieder mal eine Frage, die wahrscheinlich allen außer mir klar ist:

Ich würde gerne erreichen, dass eine html-Seite, die ich geändert habe, beim Browsen neu vom Server geladen wird. Dagegen ist es mir recht, wenn eine längere Zeit nicht geänderte Seite aus dem proxy geladen wird.

Insbesondere weiß ich nicht ob die Angabe im Header
<meta http-equiv="expires" content="aktuelles Datum">
die gewünschte Wirkung hat.

Ich weiß, dass expires="0" den Brwoser zwingt, immer neu zu laden, aber das will ich ja eigentlich nicht.

Ich bin gespannt und grüße alle herzlich

Helmut

  1. Hallo,

    Ich würde gerne erreichen, dass eine html-Seite, die ich geändert habe, beim Browsen neu vom Server geladen wird. Dagegen ist es mir recht, wenn eine längere Zeit nicht geänderte Seite aus dem proxy geladen wird.

    das sollte sich bei sinnvoll gewählten Proxy- und Browsereinstellungen (Cache) eigentlich ganz automatisch ergeben. Browser fragt an: "Hey Server, ich brauch die Ressource /xyz, im Cache hab ich noch die von vor zwei Stunden." Server antwortet: "Etwas aktuelleres hab ich auch nicht. Nimm's aus deinem Cache."

    Insbesondere weiß ich nicht ob die Angabe im Header
    <meta http-equiv="expires" content="aktuelles Datum">
    die gewünschte Wirkung hat.

    Das kommt drauf an. Erstens darauf, ob der Browser/Proxy diese Empfehlungen überhaupt berücksichtigt (muss er nämlich nicht). Zweitens darauf, ob im HTTP-Header eventuell Headerzeilen mit dem gleichen Schlüssel gesendet werden, die haben dann nämlich Vorrang.

    Ich weiß, dass expires="0" den Brwoser zwingt, immer neu zu laden, ...

    Nein, "erzwingen" kannst du hier gar nichts. Obere Priorität haben immer noch die individuellen Browsereinstellungen beim Anwender. Du kannst daher Caching-Empfehlungen geben - mehr nicht.

    Ciao,
     Martin

    --
    Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
    1. Hallo Martin,

      Insbesondere weiß ich nicht ob die Angabe im Header
      <meta http-equiv="expires" content="aktuelles Datum">
      die gewünschte Wirkung hat.

      Das kommt drauf an. Erstens darauf, ob der Browser/Proxy diese Empfehlungen überhaupt berücksichtigt (muss er nämlich nicht). Zweitens darauf, ob im HTTP-Header eventuell Headerzeilen mit dem gleichen Schlüssel gesendet werden, die haben dann nämlich Vorrang.

      Mein Firefox zumindest ignoriert die Meta-Tags vollständig - d.h. wenn keine HTTP-Header geschickt werden, aber ein Meta-Tag mit http-equiv="expires" in der HTML-Datei steht, dann tut Firefox so, als ob es den Tag gar nicht gäbe.

      Ferner: Selbst wenn das in _irgendeinem_ Browser funktionieren sollte, schreibt der HTTP-Standard dennoch ein gewisses Datumsformat vor, d.h. content="0" wird *nicht* funktionieren, außer die programmierer des Browsers waren *sehr* lasch, was das Zulassen von Eingaben funktioniert.

      Drittens: Ein eventuell vorhandener Cache-Control-Header (HTTP 1.1) hat Vorrang vor dem Expires-Header (d.h. der Expires-Header (HTTP 1.0) wird komplett ignoriert, sofern Cache-Control angegeben wurde).

      Beim Apache gibt's das Modul mod_expires, mit dem man richtige HTTP-Header mit den Resourcen mitsenden kann (mod_expires schickt sowohl Cache-Control als auch Expires), damit kann man dann wirkliche Cache-Empfehlungen abgeben. Aber wie Du bereits sagtest: Es sind nur Empfehlungen.

      Viele Grüße,
      Christian

      --
      "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
      1. echo $begrüßung;

        Ferner: Selbst wenn das in _irgendeinem_ Browser funktionieren sollte, schreibt der HTTP-Standard dennoch ein gewisses Datumsformat vor, d.h. content="0" wird *nicht* funktionieren, außer die programmierer des Browsers waren *sehr* lasch, was das Zulassen von Eingaben funktioniert.

        RFC 1945 - Kapitel 10.7 Expires-Header (HTTP 1.0)

        Note: Applications are encouraged to be tolerant of bad or misinformed implementations of the Expires header. A value of zero (0) or an invalid date format should be considered equivalent to an "expires immediately." Although these values are not legitimate for HTTP/1.0, a robust implementation is always desirable.

        RFC 2616 - Kapitel 14.21 Expires-Header (HTTP 1.1)

        HTTP/1.1 clients and caches MUST treat other invalid date formats, especially including the value "0", as in the past (i.e., "already expired").

        Die http-equiv-Angaben richten sich nach der HTTP-Spezifikation. Wenn also ein Browser ein "expires=0" nicht akzeptiert, hält er sich demzufolge nicht an die Empfehlung in RFC 1945 und an die explizite Festlegung in RFC 2616 (und auch SELFHTML würde Mist erzählen).

        echo "$verabschiedung $name";