Browser internes caching?

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

  • Browser internes caching?

    Ich habe eine Seite, die jede Stunde automatisch aktualisiert und gecached (selbst gemacht über ein Textfile) 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.

  • #2
    bau noch
    <meta http-equiv="expires" content="0">
    ein, vielleicht hilft das.

    Zur Not mal Caching-Einstellungen im Browser (IE5: Extras ->Internetoptionen -> Temporäre Dateien -> Einstellungen) überprüfen. Wenn da unter "Neuere Versionen suchen" der Wert "nie" steht, ist wohl klar dass er cached.

    Notnagel um das zu umgehen: gib dem Link einen Dummy-Parameter 't='. time()
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      http://www.php-resource.de/forum/sho...&threadid=4921

      Kommentar

      Lädt...
      X