Je galère aussi...

On joue à cache-cache ?

Posté par Tonylepsie dans PHP

Je crois que c’est le titre le plus pourri que j’ai jamais fait :) mais bref ! on va bien evidemment pas jouer à cache-cache (quoique ^^), mais parler de mise en cache !
La mise en cache de fichiers peut être très utile, notemment si on appelle régulierement des flux RSS/XML (par exemple si on utilise des Webservices), ou même sur des requêtes MySql qui reviennent souvent. Le gain en performances est tout à fait appréciable !

Le principe est on ne peut plus simple : au lieu d’effectuer une requête vers une ressource à chaque chargement de la page, on écrit lors du premier chargement le contenu de la ressource dans un fichier texte, qu’on appellera par la suite !

Mettre un menu dynamique en cache peut être une très bonne idée pour optimiser le chargement d’un site web ;)

L’exemple qui suit vous présente l’utilisation de la mise en cache sur un flux RSS.

Script php

    // recuperation du flux à traiter
    $flux = ‘http://feeds.feedburner.com/jegalereendevweb’;
    $cache_file = ‘/cache/jegalere.xml’;
       
    // determination du temps de mise en cache (en secondes) : ici, 2h
    $delai = (60*60*2) ;
       
   // on verifie que le fichier est cache est toujours valide
   if ( file_exists($cache_file) && time() < (filemtime($cache_file)+$delai) ) {
           // le fichier en cache est valide, on le récupère
        $content = file_get_contents($cache_file);
        }
   // sinon, on met à jour le fichier en cache
   else {
       $content = file_get_contents($flux);
       if ( $content != ) {
            $file = fopen($cache_file, ‘w+’);
            fputs($file, $content);
            fclose($file);
            }
       else {
             $content = file_get_contents($rss_file);
         }
    }
 

Et voila !
Il ne reste plus qu’à parser la variable $content de la manière que vous préférez, et c’est plié !


Tags : , , , .
Partager et découvrir : These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists

6 commentaires

  1. Cyril

    Il y a un problème je crois :)

    // determination du temps de mise en cache (en secondes) : ici, 2h
    $delai = (60*2) ;

  2. Tonylepsie

    certes ^^

  3. rocawear

    Super pratique mais le seul hic c’est que les vérification sont par un temps fixé, ça serait mieux que l’ont effectue un nouveau cache que si les donner on été modifier.

  4. Le roi

    Humm pas sur que niveau optimisation il soit mieux de comparer le cache au RSS que de directement le remplacer car cela implique d’ouvrir le cache, de parcourir le RSS, de les comparer etc etc…

    Qu’en pensent les pros ? lol

  5. Almaju

    Salut, juste un petit mot pour te féliciter, ce blog est tout simplement génial !
    Clair, simple, convivial, bref continue surtout.
    Cordialement, Almaju.

  6. boatboatgree

    this look dog woman elephant glass student greed day day america wood no car

Donne ton avis