QUOTE (Shinuza @ lundi 19 février 2007 à 05:59:11) :
Personnellement, j'utilise la mise en cache dès que je fais plus d'une requête dans une page, idem lorsque je fais des traitements lourds.
excellente façon de faire
voici un exemple d'une méthode de mise en cache
soit la fonction
function getdata(value1,value2)
qui retourne le résultat mis en forme de la requête
select field1,field2 from table1 where field3=value1 and field4=value2
si value1=123 et value2=456 alors on a
select field1,field2 from table1 where field3=123 and field4=456
on l'éxécute, on parcourt le résultat pour le mettre en forme
mais avant de retourner le résultat, on le sauve dans un fichier avec un nom particulier, genre result-getdata,123,456.txt
à chaque appel de getdata, on regarde s'il existe un fichier qui correspond
oui -> on retourne directement le contenu du fichier
non -> on exécute la requête et on crée le fichier
et ceci tant que le contenu de la bdd ne change pas le résultat
s'il y a une mise à jour qui change le résultat de getdata, alors on efface les result-getdata,*
mais ça c'est très pointu et ça nécessite de bien connaître le modèle pour savoir que telle ou telle mise à jour modifie le résultat de getdata, alors on peut être moins exigeant et effacer tous les fichiers result-* dès qu'on met à jour...
et ça marche vraiment bien pour les grosses requêtes à x tables et y jointures qui retournent z lignes