Voici un petit tutoriel pour expliquer comment – très simplement – mettre une page dynamique en cache pour en accélérer l’affichage et limiter les ressources côté serveur (apache et mysql).
Premièrement, suffit de créer deux fonctions. La première – debut_cache() – testera l’existence d’un fichier cache récent pour l’affichier, ou initialisera le buffer et débutera la mise en cache du contenu. La deuxième – fin_cache() – prend le contenu mis dans le buffer et va, suivant le besoin, écrire un fichier statique avec le contenu généré par le serveur qui sera alors repris par les requêtes suivants jusqu’à son expiration.
function debut_cache() { global $cachedFile; if(CACHE > 0) { if (!isset($_POST) || count($_POST) == 0) { $hash = md5(serialize($_GET) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); $filename = basename($_SERVER['PHP_SELF'] . '.' . $_SERVER['HTTP_HOST'] . '.' . $hash . '.html'); if (file_exists(CACHE_DIR . $filename) AND (time() - filemtime(CACHE_DIR. $filename)) < CACHE) { readfile(CACHE_DIR . $filename); exit(); } else { $cachedFile = CACHE_DIR . $filename; ob_start(); } } else $cachedFile = false; } } function fin_cache() { global $cachedFile; if((CACHE > 0) AND $cachedFile) { $hoststr= getenv("HOSTNAME"); $host = explode (".", $hoststr); $page = ob_get_contents(); $page .= '<!-- Page mise en cache @ ' . date('Y-m-d H:i:s') . ' -->'; ob_end_flush(); if ($file = fopen($cachedFile, 'w')) { fwrite($file, $page); fclose($file); } } }
Juste avant de faire l’appel, il importe de définir deux variables (des constantes globales dans cet exemple).
//temps pour le cache (secondes)... 0 pour annuler la cache define('CACHE', 60*15); //15 min //dossier de cache define('CACHE_DIR', '/www/cache/');
Ensuite, on se lance :
//lancer la mise en cache debut_cache(); //--------------------------------------------- //afficher normalement votre page ici //elle sera mise dans le buffer //--------------------------------------------- //afficher le contenu (du buffer ou du fichier mis en cache) fin_cache();
Commentaires Facebook
Un commentaire pour “Mise en cache de pages dynamiques”
Ajouter un commentaire
Additional comments powered by BackType
Twitter @emilegirard
Mots-clefs
Ailleurs
- 100% Hockey
- AccesOWeb
- Alsacréations
- Canadiens de Montréal
- Carl Charest
- Carl-Frédéric De Celles
- Chrystian Guy
- Debbie Rouleau
- Dominic Arpin
- Eric Baillargeon
- Famille Enfants Parents
- Goudaille
- Histoires de Geek
- Il Blogue
- Influenceur – Blogue Tendance
- Martin Petit
- Michel Dumais
- Nicolas Langelier
- Patrick Lagacé
- PhotosMax
- Samuel Parent
- Sébstien Goulet
- Sportnographe
- Stéphane Guérin
- Stéphane Jose
- Tchuvak’s Life
- Yannick Manuri
- Ze Canada

molaram a dit :
Sur mon blogue : Mise en cache de pages dynamiques http://bit.ly/2WxNgf
This comment was originally posted on Twitter