kostenloser Webspace werbefrei: lima-city


cache des clienten nutzen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g****e

    ich steh im moment am schlauch. ich bin mit headern nicht bewandert, daher frag ich hier jetz einfach mal nach.

    also generell geht es darum, dass ich ein cachefile erstelle und schaue wann das erstellt wurde, um dann die erstellungszeit mit der zeit des users zu vergleichen. ich hab aber keine ahnung wie ich das effektiv und vor allem RICHTIG umsetze. google ist da auch sehr zwiespältig, darum frag ich hier mal.

    ich hab 2 methoden nun gefunden die wirklich häufig vorgekommen sind, daher möchte ich wissen welche überhaupt funktioniert, welche was taugt und es am liebsten auchnoch verstehen^^ dazu muss ich aber erstmal wissen was funktioniert.

    so, die erste funktion sieht so aus:

    $cache_file_timestamp = @filemtime($cache_file);
    
                //Cache laden wenn Files nicht Verändert
                $gmt_mtime = gmdate('r', $cache_file_timestamp);
                header('ETag: "'.md5($cache_file_timestamp.$cache_file).'"');
                if( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH']) ) {
                    if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == $gmt_mtime || str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == md5($cache_file_timestamp.$cache_file)) {
                        header('HTTP/1.1 304 Not Modified');
                        exit();
                    }
                }
                header('Last-Modified: '.$gmt_mtime);
                header('Cache-Control: public');


    die habe ich relativ häufig gefunden nur verstehe ich hier, gestehe ich, nicht richtig was sie genau macht. außerdem krieg ich öfters den fehler "undefined index 'HTTP_IF_NONE_MATCH' " was mich bissel stört.

    nach suchen fand ich aber auch auf selfphp die zweite variante, ich hab sie auch gleich ein bissel angepasst:

    $cache_file_timestamp = @filemtime($cache_file);
    
    // Cache-Lebensdauer (in Minuten)
    $dauer = 15; 
    $exp_gmt = gmdate("D, d M Y H:i:s", time() + $dauer * 60) ." GMT";
    $mod_gmt = gmdate("D, d M Y H:i:s", $cache_file_timestamp) ." GMT";
    
    header("Expires: " . $exp_gm);
    header("Last-Modified: " . $mod_gmt);
    header("Cache-Control: private, max-age=" . $dauer * 60);
    // Speziell für MSIE 5
    header("Cache-Control: pre-check=" . $dauer * 60, FALSE);


    ich weiß jetzt nicht direkt damit anzufangen, hoffe aber mal dass mich jemand aufklären kann welcher der beiden funktioniert, und am liebsten wie. der zweite ist recht klar und logisch, relativ zumindest, aber der erste ist undurchsichtig.
    ziel ist halt, dass wenn vorhanden die cache beim user genommen wird, und das skritp abbricht. beim zweiten nicht wirklich der fall, aber ich bin da bisssel überfragt.

    ich hoffe mir kann geholfen werden =)

    Beitrag zuletzt geändert: 15.11.2010 22:24:47 von ggamee
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!