Cache-Control

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cache-Control

    Moin.
    So um gleich zur Sache zu kommen, mein Problem liegt beim Cache'n.

    Zur Zeit benutze ich folgendes, um die Seite zu Cache'n
    PHP-Code:
    header("Cache-Control: public, max-age=" 30 60); 
    (Der Code liefert das erfreuliche Ergebnis, dass wenn ein Nutzer auf "Zurück" klickt die vorherige Seite nicht nochmal geparst/neu geladen wird)

    Die Sache ist nun die, dass jetzt aber bei allen Seiten, auf denen der Nutzer schon einmal war, der "Inhalt" vom letzten Aufruf angezeigt wird.
    Wie kann ich es am besten lösen das beim "Zurück" springen des Nutzers die Seite nicht neu geladen wird, jedoch aber bei allen anderen Operationen?

    Mfg

  • #2
    Hmm, du musst dich schon entscheiden. Entweder wird die Seite für die Zeit x gespeichert, oder nicht.

    Aber ich wette, du willst etwas ganz bestimmtes damit bezwecken, plaudere mal ein bisschen aus dem Nähkästchen, sicher gibt es ne bessere Lösung...

    Kommentar


    • #3
      Vorab, ich Programmiere Just for Fun.
      Okay, was ich erreichen will ist, dass eine Seite jedes mal "neu" geparst wird (weil dynamische Inhalte vorhanden sind), jedoch nicht, wenn ein Nutzer die "Zurück"-Option (oder ähnliches) verwendet.

      Kommentar


      • #4
        Und was unterscheided den HTTP-Request eines "zurück" von dem eines normalen Links, o.ä.?

        Kommentar


        • #5
          Ich weiß nicht
          Was ich halt erreichen will, ist einfach das die Seite nicht nocheinmal geladen wird, wenn ein Nutzer auf zurück klickt.

          Kommentar


          • #6
            Es gibt auch keinen Unterschied.

            Liegt also afaik im Ermessen des Browsers, bzw. an seinen Einstellungen ob er die Seite bei "zurück" neu läd, oder aber eine Seite aus dem Cache nimmt.

            Du kannst zwar das Cache-Verhalten beeinflussen. Jedoch nicht seperat.

            Kommentar


            • #7
              Eine Möglichkeit wäre die Verwendung des If-Modified-Since-Headers, der von den Standardbrowsern, aber auch z.B. vom Googlebot unterstützt wird und dabei hilft, den Traffic zu reduzieren.

              Die folgende Beispielfunktion klärt mit dem Client ab, ob er bereits die aktuelle Seitenversion besitzt. Ist dies der Fall, wird die Ausgabe abgebrochen und der Client zeigt die gecachte Seite an. Die Funktion muss vor der Seitenausgabe aufgerufen werden, da Header gesendet werden.

              PHP-Code:
              // Erzeugen von Last-Modified und ETag-Headern
              function conditional_get ($timestamp)
              {
                
              $last_modified gmdate("D, d M Y H:i:s"$timestamp).' GMT';
                
              $etag md5($last_modified);
                
              header('Last-Modified: '.$last_modified);
                
              header('ETag: "'.$etag.'"');
                
              $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
                  
              stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
                  
              false;
                  
              $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
                  
              stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
                  
              false;
                if (!
              $if_modified_since && !$if_none_match) return;
                if (
              $if_none_match && $if_none_match != $etag) return;
                if (
              $if_modified_since && $if_modified_since != $last_modified) return;
                  
              header('HTTP/1.1 304 Not Modified');
                  
              ob_end_clean();
                  exit;

              http://zeilenschlag.de

              Kommentar

              Lädt...
              X