Mise en cache php

Voici un petit script pour facielement mettre en cache vos pages web.
Très pratique pour gagner des ressources sur vos sites web !
Ce script crée physiquement un document HTML dans un dossier /cache.
Fonctionne dès php 4.1 !

 

 

Pour commener, il faut créer un dossier /cache a la racine de votre site, et lui atribuer les droits d'écriture (CHMOD 777).

Ensuite, il suffit de placer ce bout de code avant tout code PHP :

AVANT TOUT CODE PHP
<?PHP
//paramètre de la mise en cache
$urldemandee=$_SERVER['REQUEST_URI']; //on lit l'adresse de la page
$urldemandee=ereg_replace('/','-',$urldemandee); // on tranforme l'adresse en nom de fichier
if($urldemandee=="-") $urldemandee="-index.html"; // si l'adresse est la racine du site, on ajoute index.html
$fichierCache="cache/cache".$urldemandee; // on construit le chemin du fichier cache de la page
if (@filemtime($fichierCache)<time()-(6*3600)) { //si la page n'existe pas dans le cache ou si elle a expiré /moin de 6h 6x3600 (moin de 15 minute) 1x900 seconde
ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
?>

 

VOTRECODE PHP
<?php
Echo"ici votre code php de votre site web";
?>
<p> ou simplement tout code html<p>
<?php
Echo 'afin de construire une jolie page web "semi-dynamique" ';
?>


FIN DE VOTRE DOCUMENT
<?php
$contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
ob_end_flush();// on termine la bufferisation
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
if ($fd) {
fwrite($fd,$contenuCache); // on ecrit le contenu du buffer dans le fichier cache
fclose($fd);
}
} else { // le fichier cache existe déjà
include ($fichierCache); // on le copie ici
}
?>

 

Explication :

Ligne 5 : $fichierCache="cache/cache".$urldemandee; // on construit le chemin du fichier cache de la page
> Chemin d'accès a votre dossier cache, la ou les fichiers sont créés physiquement

Ligne 6 : if (@filemtime($fichierCache)<time()-(6*3600)) {
> Si le fichier en cache est vieux de plus de 6h ou n'existe pas, alors on le recréer
en seconde exemple :
15 minte = 1* 900 (1x 900 seconde)
6h = 6* 3600 Seconde (6x 1 heure :) )

fwrite($fd,$contenuCache);>On écrit le fichier (si vieux, ou non existant)

include ($fichierCache);> Le fichier n'est pas vieux et existe, alors on l'inclu :)


Publié le 07 Juillet 2006 par luca | Ecouter l'article

Publié dans : Programmation

Accueil Précédent Suivant