Josef K.: Browser lädt Seite aus dem eigenen Cache

Moin zusammen,

also mir ist es bis dato nur beim Firefox aufgefallen. Selbiger lädt eine gewisse Seite aus dem eigenen Cache, obwohl zwischenzeitlich Änderungen vorgenommen wurden.

Frage nun: Wie veranlasse ich die Browser, nicht auf den Cache zuzugreifen, falls seit dem letzten Besuch etwas geändert wurde.

Mit "<meta http-equiv="cache-control" content="no-cache">" würde das wohl gehen, hat aber den entscheidenden Nachteil, dass die Seite ständig neu geladen wird, völlig egal ob etwas geändert wurde oder nicht.

Jemand sachdienliche Hinweise zu dem Thema?

Besten Dank und Gruß
Josef K.

  1. Hi,

    Frage nun: Wie veranlasse ich die Browser, nicht auf den Cache zuzugreifen, falls seit dem letzten Besuch etwas geändert wurde.

    indem Du ihm die Änderungsrate mitteilst, _bevor_ er die Seite in den Cache legt. Danach ist es zu spät.

    Mit "<meta http-equiv="cache-control" content="no-cache">" würde das wohl gehen, hat aber den entscheidenden Nachteil, dass die Seite ständig neu geladen wird, völlig egal ob etwas geändert wurde oder nicht.

    Dieserhalb und desterwegen gibt es einen expires-Header.

    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
  2. Lieber Josef,

    woher soll denn der Browser wissen, wann sich eine Seite verändert hat?

    Es gibt bei den Meta-Angaben welche, die angeben können, wie lange eine Seite "gültig" ist. Aber damit musst Du als Autor im Quelltext eintragen, wann eine Seite "verfällt". Und ich weiß nicht, was passiert, wenn ein Browser eine Seite mit abgelaufenem Haltbarkeitsdatum lädt!

    Ob Dir das weiterhilft...? Nutze den obigen Link für weitere Informationen zu META-Angaben (die Du aber anscheinend schon kennst).

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Lieber Josef,

      woher soll denn der Browser wissen, wann sich eine Seite verändert hat?

      »»

      Tja, das ist ne berechtigte Frage. Wie auch immer, mit dem "expires"-tag ist mir geholfen.

      Danke Euch beiden
      Josef K.

    2. Aber damit musst Du als Autor im Quelltext eintragen, wann eine Seite "verfällt". Und ich weiß nicht, was passiert, wenn ein Browser eine Seite mit abgelaufenem Haltbarkeitsdatum lädt!

      Bei abgelaufenem Datum wird die Seite neu geladen, nehm ich mal an. Sonst würde die Angabe ja wenig Sinn machen. Dennoch ist das ganze System etwas unpraktisch...oder ich habs falsch verstanden.

      Wat nu, wenn ich was ändere. Bleibt mir nur die Möglichkeit, das aktuelle Datum einzutragen. Dies führt aber dazu, dass die Seite in Zukunft permanent neu geladen werden muss...das will man dem User aber nicht zumuten.

      Alternativ können ja Sekundenwerte angegeben werden, so dass die Seite z.B. alle 24 Stunden neu geladen wird. Die ideale Lösung ist das aber auch nicht. Ich will ja schließlich erreichen, dass die Seite nur dann vom Server geladen wird, wenns auch unbedingt nötig ist (d.h. wenn etwas geändert wurde).

      1. Hi,

        Ich will ja schließlich erreichen, dass die Seite nur dann vom Server geladen wird, wenns auch unbedingt nötig ist (d.h. wenn etwas geändert wurde).

        und wie soll der Browser wissen, wann es nötig ist, ohne die Seite vom Server zu laden? Hellsehen können die aktuellen Programme noch 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. und wie soll der Browser wissen, wann es nötig ist, ohne die Seite vom Server zu laden? Hellsehen können die aktuellen Programme noch nicht.

          Dieser Einwand wurde bereits von dem werten Kollegen eingeworfen - völlig zu Recht natürlich. Hast Du vielleicht auch Lösungsvorschläge im Angebot?

          Die Nachteile der beiden Varianten "Datumsangabe" und "Zeitspanne" (in Sekunden) hatte ich bereits erläutert...hoffentlich verständlich.

          Cheers
          Josef K.

          1. Hi,

            Hast Du vielleicht auch Lösungsvorschläge im Angebot?

            die nannte ich schon in meiner ersten Antwort.

            Die Nachteile der beiden Varianten "Datumsangabe" und "Zeitspanne" (in Sekunden) hatte ich bereits erläutert...hoffentlich verständlich.

            Die Nachteile der Lösung sind bekannt, ja.

            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
          2. Hallo Josef,

            und wie soll der Browser wissen, wann es nötig ist, ohne die Seite vom Server zu laden? Hellsehen können die aktuellen Programme noch nicht.

            Hellsehen können die Programme in der Tat nicht. Aber jeder Browser sollte durch seine eigene Cahce-Verwaltung "wissen", wann er eine bestimmte Ressource abgerufen und in seinem Cache abgelegt hat. Bei der nächsten Anforderung derselben Ressource _kann_ er mit dem HTTP-Request einen "If-Modified-Since" Header mitschicken und so dem Server mitteilen, von wann die im Cache eingelagerte Version ist. Der HTTP-Server kann nun seinerseits diesen Header auswerten, den vom Client mitgesendeten Zeitstempel mit dem Änderungsdatum der zugehörigen Datei(en) vergleichen und abhängig vom Ergebnis entweder

            a) ganz "normal" einen Response mit Status "200 OK" und der angeforderten Ressource im Body zurückliefern, oder

            b) als Status "304 Not Modified" zurückliefern, dann weiß der anfordernde Client, dass er ruhigen Gewissens seine alte Version aus dem Cache verwenden darf.

            Ob der Firefox diese Einstellung unterstützt, kann ich nicht mit Sicherheit sagen - ich wäre aber entsetzt, wenn er diese Möglichkeit nicht böte. Der Internet Explorer kann das auf jeden Fall sehr ordentlich.

            Vielleicht hilft dir dieser Wink ja weiter.
            So long,

            Martin

            1. Hui, das hört sich beeindruckend kompetent an...nur leider kann ich Dir nicht ganz folgen. Was muss ich denn nun tun, damit beschriebene Funktionalität auch genutzt wird?

              Bis dato läuft das beim Firefox auf alle Fälle nicht.

              Besten Dank und Gruß
              Josef K.

              1. Hallo,

                Hui, das hört sich beeindruckend kompetent an...

                Danke für die Blumen...
                Es ist nur das, was das HTTP-Protokoll so hergibt.

                nur leider kann ich Dir nicht ganz folgen. Was muss ich denn nun tun, damit beschriebene Funktionalität auch genutzt wird?

                Im Internet Explorer:
                Systemsteuerung/Internetoptionen/Allgemein/Temporäre Internetdateien/Erweitert/Nach neuen Versionen der gespeicherten Seiten suchen/Bei jedem Seitenaufruf
                (bin nicht sicher, ob der Wortlaut stimmt, ich habe hier die englische Version)

                Im Firefox:
                Keine Ahnung. Wahrscheinlich eine versteckte Einstellung auf der about:config-Seite, die leider noch sehr dokumentationsbedürftig ist... :(

                Bis dato läuft das beim Firefox auf alle Fälle nicht.

                Ja, in der Defaulteinstellung ist er jedenfalls nicht so schlau. Der IE übrigens auch nicht. ;)
                Sorry, weiter kann ich im Moment nicht helfen.

                So long,

                Martin

                1. Sorry, weiter kann ich im Moment nicht helfen.

                  Das war doch schon ne ganze Menge. Als Webmeister habe ich auf die client-seitigen Einstellungen natürlich wenig Einfluss, aber ich werde auf mangelnde Sachkenntnis der User plädieren, falls sich mal jemand beschwert...;-)

                  Besten Dank und Gruß
                  Josef K.