Administrateur PHPfrance |
3088 Messages
13 juin 2006, 19:39
@fab : si ton fichier est entièrement composé de HTML tu ferais mieux d'utiliser readfile() à la place d'include()
Pour en revenir aux caches, le problème n'est pas tellement de le remplir ou de l'afficher. Le plus gros problème est de savoir quand et comment l'invalider. À mon avis, n'essaie pas de mettre le contenu de la page en cache sous la forme de HTML à moins qu'il ne s'agisse d'un très gros site (plus d'un millier d'utilisateurs). Concentre-toi sur les données qui prennent le plus de ressources pour être générées et mets-les en cache avec
APC ou sauve-les dans un fichier sous forme sérialisée ou sous forme de PHP avec var_export(). Sache qu'un
return dans un fichier include devient le résultat de la fonction include donc si ton fichier cache ressemble à
<?php return array('un', 'deux'); ?>
alors
$nombres = include('fichier_cache.php');
remplira la variable $nombres avec le tableau ci-dessus.
Pour invalider le cache, tu peux soit le faire expirer
n secondes après génération, --auquel cas il te suffit d'utiliser filemtime() sur le fichier pour connaitre son âge--, soit manuellement en effaçant le fichier avec unlink() à chaque fois que tu sais que les données ont changé.
Dernière chose, je te recommande d'implémenter ton cache progressivement en mesurant les gains en performance à chaque étape. On peut facilement se laisser entraîner et en faire trop pour finalement pas grand-chose.