böser Browser!

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

  • böser Browser!

    Wie kann ich verhindern, dass der Browser intern die aufgerufenen Seiten cached?

    Ich meine, wenn im Script ein neues Script aufgerufen wird, dieses der Browser schon in seiner history gespeichert hat, dann läd er das aus der history.
    In den meisten Fällen ist das auch gut so, da so ja die Seite schneller dargestellt werden kann.
    In einem Fall ist das bei mir aber nicht so, da ich in dem aufgerufenem Script die aktuelle Zeit berechne und davon die Darstellung abhängig ist. Ist diese Seite nun schon einmal aufgerufen worden, so läd der Browser wieder die alte, mit der falschen darstellung.
    Ich will aber, dass er sie komplett neu berechnet.

    Wie mach ich das?

  • #2
    hau das mal in den HEAD deiner Seite

    Cache-Control: no-store, no-cache, must-revalidate
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Das in den Header einbauen:
      Code:
      <meta http-equiv="pragma" content="no-cache">
      <meta http-equiv="cache-control" content="no-store, no-cache, must-revalidate">
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        Danke! Ich hab den zweiten Vorschlag genommen und es funktioniert einwandfrei!

        Nur noch eine kurze Frage:
        Was ist der Unterschied zwischen den beiden Vorschlägen?
        Ist das eine CSS und das andere HTML?
        Wenn ja, wie muss ich dann das CSS integrieren?

        Kommentar


        • #5
          ich glaube der NS 4.7 reagiert nicht auf "no-cache"
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            Einfach beides so in den header schreiben.

            Was was ist kann ich dir nicht genau sagen, aber es bewirkt das der Cach nicht geladen wird und das die Seiten nicht auf einen Proxy gespeichert werden.

            @TBT
            NS 4.7 kommt damit klar.
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #7
              Der Vorschlag von TBT wird in den HTTP-Header geschrieben:

              header("Cache-Control: no-store, no-cache, must-revalidate");

              und ist meines erachtens der sauberere Weg unter PHP.

              Wotan's Vorschlag ist die HTML Variante, wird in den HEAD - Bereich des HTML-Dokuments geschrieben und ist, wie der Name schon sagt ein HTTP-Equivalent.
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Ich habe eine Seite, die jede Stunde automatisch aktualisiert und gecached wird.
                Beim Aufruf der Seite ($id=cache) wird der gespeicherte Teil geladen, sofern vorhanden.
                Über den Aktualisieren-Button kann der Benutzer, wenn gewünscht, die Daten auf den neuesten Stand bringen.
                Die Seite wird dann erneut aufgerufen, aber mit $id=0, weshalb der else-Teil ausgeführt wird, der wiederum die Seite aufruft.

                PHP-Code:
                if ($id=='cache'&&file_exists($data))
                {
                   
                $meine_html_seite file$data );    // gecachte Seite auslesen
                   
                $lastCache=$meine_html_seite[0];    // erste Zeile entspricht dem Cache-Zeitpunkt
                   
                $now=time();
                   
                $diff=$now-$lastCache;
                   
                $min=(integer)($diff/60);    // Anzahl der Minuten seit der letzten Aktualisierung
                   
                $date=strftime("%d.%m.%Y",$lastCache);
                   
                $time=strftime("%R",$lastCache);
                   
                                                
                //header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
                //header ("Pragma: no-cache");                          // HTTP/1.0
                   
                   
                echo"
                   <html>
                   <head>
                   <title> Wieso tuts net? </title>
                   <meta http-equiv=\"cache-control\" content=\"no-store, no-cache, must-revalidate\">
                   <meta http-equiv=\"pragma\" content=\"no-cache\">
                   <link rel=\"stylesheet\" href=\"CorpID.css\" type=\"text/css\"></link>
                   </head>
                   
                   <body>
                   //---------- Aktualisierungsbutton; Hintergrund = rot, wenn Limit überschritten, sonst grau (normal)
                   echo"
                   
                <div align=\"left\" valign=top style=\"padding:4px\">
                   <input type=Button "
                ;if($min>1){echo"style=\"background-color:#cc0000\"";}
                      echo
                " name=group title='auf den aktuellen Stand bringen\nAchtung: Dauert ein paar Sekunden!'
                      value=\"Aktualisieren\" onClick=\"window.location.href='overview_year.php3?id=0'\">
                   </input>
                   </div>
                   "
                ;

                   
                //---- Zeichen für Zeichen gecachte Datei auslesen und darstellen, Beginn in Zeile 2, da erste Zeile die Zeit der Erstellung ist
                   
                $h=1;
                   while(
                $meine_html_seite[$h])
                   {
                      echo 
                $meine_html_seite[$h];
                      
                $h++;
                   }
                   exit(); 
                //----- script ist fertig; nicht unbedingt nötig, da else nicht durchlaufen wird und das script dann sowieso zu Ende ist
                }

                else
                {
                   
                $s='';   //String in den der Rest vom Body gespeichert wird
                   
                $s.=...;

                   
                $fp fopen($data,'w');    //--------------------------------------------------------------------
                   
                fwrite$fp$s);    //------ Daten in die zugehörige Textdatei CacheYearXXXX.cac schreiben
                   
                fclose$fp );        //--------------------------------------------------------------------
                    
                   //------- Seite neu aufrufen, diesmal aber die soeben gecachte
                   
                echo"<html>
                   <body>
                   <script language=\"javascript\">window.location.href='overview_year.php3?id=cache'   </script>
                   </body>
                   </html>
                   "

                Folgendes Problem:
                Der Aktualisieren-Button funktioniert nur ein Mal.
                Danach durchläuft er immer den if-Teil, oder der Browser ruft aus seinem Speicher die Datei auf, was ich aber eigentlich im Header unterbunden habe.
                Den if-Teil aber aktualisiert er, d.h. wenn von einer Aktualisierung zur nächsten das Zeitlimit über die 30-Minuten-Grenze kommt ist der Button rot.
                Aber eigentlich sollte ja der gesamte Body neu berechnet werden und die Seite neu aufgerufen werden.

                Ich hoffe das war verständlich und mir kann hierbei jemand weiter helfen.
                Zuletzt geändert von LazyLow; 30.09.2002, 12:26.

                Kommentar


                • #9
                  Also ich hab mich da am Freitag irgendwie geirrt, dass es einwandfrei läuft.
                  Vielleicht hab ich auch was falsch beim Aufruf der Seite aus dem else-Block.
                  Ich hau es jetzt nochmal ins html-forum, da es dort vielleicht eher hingehört.
                  Aber ich glaub ja nicht, dass dort andere Leute reinschauen als hier

                  Kommentar

                  Lädt...
                  X