14-12-2010, 04:13 PM
Pour ce cas là oui, mais ça permet déjà souvent de réduire fortement le nombre de requêtes...
Ensuite, la fonction foo() tu lui fait faire ce que tu veux... si tu veux aller chercher en base, ou dans un fichier de cache, c'est comme tu veux. Par contre, pour une table de ref, y a pas grand intérêt à stocker dans un fichier, jusqu'à une centaine d'enregistrement (sans doute plus même) il est en général plus rapide de charger les infos depuis la base de données que de passer par le chargement d'un fichier de cache.
Enfin ça c'est très variable... est-ce que la BDD est sur le même serveur ou pas ? est-ce que le serveur de BDD est mutualisé ou pas ? toute sorte de paramètres qui vont avoir un impacte sur les perfs. Mais sur une seule table, sans jointure, autant charger directement depuis la base.
Ce qui peut-être plus intéressant à mettre dans un cache ce sont des objets plus complexes et lourds à charger et qui ne se modifie pas systématiquement.
Pour la gestion d'un cache, on peut partir du même principe : une seule fonction de chargement qui charge l'objet (et tout ce qui va avec) une première fois, et le stocke ensuite dans un fichier. Au second appel, on vérifie si le fichier existe, si oui, on charge depuis le fichier, sinon on recharge depuis la base.
Enfin, à chaque fois qu'il y a une modification qui impacte l'objet en question, on supprime simplement le fichier en question (pour qu'au prochain appel, il recharge la version à jour depuis la base).
Mais il existe de nombreux outils de gestion de cache très performant.
Personnellement, je travaille avec Zend_Cache : http://framework.zend.com/manual/fr/zend...ction.html
C'est un peu complexe à utiliser la première fois, mais ensuite c'est très performant. Mais il en existe d'autres...
Ensuite, la fonction foo() tu lui fait faire ce que tu veux... si tu veux aller chercher en base, ou dans un fichier de cache, c'est comme tu veux. Par contre, pour une table de ref, y a pas grand intérêt à stocker dans un fichier, jusqu'à une centaine d'enregistrement (sans doute plus même) il est en général plus rapide de charger les infos depuis la base de données que de passer par le chargement d'un fichier de cache.
Enfin ça c'est très variable... est-ce que la BDD est sur le même serveur ou pas ? est-ce que le serveur de BDD est mutualisé ou pas ? toute sorte de paramètres qui vont avoir un impacte sur les perfs. Mais sur une seule table, sans jointure, autant charger directement depuis la base.
Ce qui peut-être plus intéressant à mettre dans un cache ce sont des objets plus complexes et lourds à charger et qui ne se modifie pas systématiquement.
Pour la gestion d'un cache, on peut partir du même principe : une seule fonction de chargement qui charge l'objet (et tout ce qui va avec) une première fois, et le stocke ensuite dans un fichier. Au second appel, on vérifie si le fichier existe, si oui, on charge depuis le fichier, sinon on recharge depuis la base.
Enfin, à chaque fois qu'il y a une modification qui impacte l'objet en question, on supprime simplement le fichier en question (pour qu'au prochain appel, il recharge la version à jour depuis la base).
Mais il existe de nombreux outils de gestion de cache très performant.
Personnellement, je travaille avec Zend_Cache : http://framework.zend.com/manual/fr/zend...ction.html
C'est un peu complexe à utiliser la première fois, mais ensuite c'est très performant. Mais il en existe d'autres...