Tout dépends la façon dont tu utilises ton cache, mais dans l'idée oui. Mais une façon encore plus interessante de faire ça est de stoquer l'html de ta carte, totalement générée, dans le cache.
13-08-2009, 11:18 PM (Modification du message : 13-08-2009, 11:18 PM par tog84.)
Si je peux abuser un peu...
Tu stocke seulement le résultat html soit un truc du genre pour une image de ma carte.
$macache = '<img id="6-8:2-1:492" class="img_terrain" src="images/mer.jpg" alt="mer.jpg" onclick="affiche_infos(this)">';
C'est bien ça ?
Merci
Ben, c'est ça mais à un niveau plus global. Si ta carte est une image générée par php, ce sont les données que php affiche (tu les as via ob_start()) qu'il faut mettre en cache
(13-08-2009, 11:28 PM)Ekilio a écrit : Ben, c'est ça mais à un niveau plus global. Si ta carte est une image générée par php, ce sont les données que php affiche (tu les as via ob_start()) qu'il faut mettre en cache
tu peux préciser sur ob_start, stp ?
Désolé d'être si exigeant.
Ben, le concept c'est de capturer ce qui va être affiché par le serveur lorsque tu fais ton imagejpeg(). L'enregistrement dans un fichier (en utilisant imagejpeg) est super lourd et inutile, il suffit d'utiliser un code de ce genre :
Code PHP :
<?php
// D'abord tu envoies les headers voulus, ça c'est la base header('Content-type: image/jpeg');
// Ensuite tu testes si le cache existe $cacheID = md5(serialize($_REQUEST) . serialize($_SESSION)); $cache = new cached;
if($cache->exist($cacheID)) // Ce n'est qu'un exemple de classe hein bien sûr {
// Le cache existe : on s'en sert echo $cache->getCachedData($cacheID);
// Et on quitte die();
}
// Si on est ici le cache n'existe pas, on créé notre image $im = imagecreatetruecolor(120, 120);
/*
* Bla bla bla tu génères ton image
*/ $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, 'Bla bla bla', $text_color);
// Tu prépares le buffer ob_start();
// Tu affiches ton image imagejpeg($im);
// Et tu récupère ce qu'elle contient $content = ob_get_flush();
// Ensuite c'est tout simple : tu l'enregistre $cache->saveData($cacheID, $content);