par
naholyr » 26 juin 2005, 23:29
Très simple, pour le moment tu fais ça :
$contenu = file_get_contents($fichier_distant);
Au lieu de ça tu vas faire :
// Le temps d'expiration du cache (en seconde, 3600 = 1h)
$expire = 3600;
// Le dossier contenant les fichiers mis en cache
$dossier_cache = 'cache';
// Un nom unique attribué au fichier distant pour sa mise en cache
$fichier_cache = $dossier_cache.'/'.md5($fichier_distant);
// On met le cache à jour s'il a expiré (ou s'il n'existe pas)
$mettre_a_jour = !is_file($fichier_cache) || time()-filemtime($fichier_cache)>$expire;
if ($mettre_a_jour) {
// on récupère le contenu distant
$contenu = file_get_contents($fichier_distant);
// on crée le fichier de cache
if ($fp = @fopen($fichier_cache, 'w')) {
fputs($fp, $contenu);
fclose($fp);
}
}
else {
// on récupère le contenu mis en cache
$contenu = file_get_contents($fichier_cache);
}
C'est l'algo "de base" de mise en cache, très simple à mettre en oeuvre et à généraliser (pour en faire une fonction par exemple).
Très simple, pour le moment tu fais ça :[php]$contenu = file_get_contents($fichier_distant);[/php]
Au lieu de ça tu vas faire :[php]// Le temps d'expiration du cache (en seconde, 3600 = 1h)
$expire = 3600;
// Le dossier contenant les fichiers mis en cache
$dossier_cache = 'cache';
// Un nom unique attribué au fichier distant pour sa mise en cache
$fichier_cache = $dossier_cache.'/'.md5($fichier_distant);
// On met le cache à jour s'il a expiré (ou s'il n'existe pas)
$mettre_a_jour = !is_file($fichier_cache) || time()-filemtime($fichier_cache)>$expire;
if ($mettre_a_jour) {
// on récupère le contenu distant
$contenu = file_get_contents($fichier_distant);
// on crée le fichier de cache
if ($fp = @fopen($fichier_cache, 'w')) {
fputs($fp, $contenu);
fclose($fp);
}
}
else {
// on récupère le contenu mis en cache
$contenu = file_get_contents($fichier_cache);
}[/php]
C'est l'algo "de base" de mise en cache, très simple à mettre en oeuvre et à généraliser (pour en faire une fonction par exemple).