Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-01-2011 13:52:44

Stoomm
Membre
Date d'inscription: 06-05-2009
Messages: 48

[Zend_Cache] Retours d'expériences

Hello à tous,

Je commence à m'intéresser au composant Zend_Cache. J'ai lu la doc et fait quelques tests mais sans vraiment aller plus loin.

En fait, ma première problématique est simple : Que dois-je mettre en cache ?

D'un point de vue base de données, j'ai pensé à mettre les données en cache sur un fetchAll et invalider ce cache sur un delete ou un save. Est-ce que le principe est bon ? Avec ce principe on risque à un moment d'avoir l'ensemble de la BDD en cache, et je ne sais pas si cela à un réel avantage.

D'un point de vue application, je me suis dit par exemple que cela pourrait être intéressant de mettre mes formulaires en cache. Exemple : le formulaire de login (pour un premier affichage sans POST). Mais clairement, je n'ai pas réussi à faire ce que je voulais.

Du coup, je me posais la question de savoir comment vous procéder, ce que vous mettez en cache, ce qui va vous poussez à mettre quelque chose en cache, etc...

Merci donc pour vos lumières smile

A bientôt,

Stoomm.

Hors ligne

 

#2 24-01-2011 18:18:15

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Cache] Retours d'expériences

Hello,

Si tu te poses la question, c'est que vraisemblablement tu n'as tout simplement rien à mettre en cache pour l'instant smile.

Tu peux par exemple mettre des données calculées que tu ne souhaites pas recalculer à chaque requête. Tu peux mettre en cache le résultat d'une requête "longue" sur une base de données...

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 24-01-2011 21:08:19

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Cache] Retours d'expériences

En tout cas, effectivement si tu mets toute ta base de données en cache, ton cache ira moins vite que ta base.

Il faut de toute façon réfléchir dans ce sens :
- mettre une quantité de données relativement petite
- mettre des données qui peuvent être assez longues à calculer
- mettre des données qui sont souvent appelées (des données de la page d'accueil par exemple)

Au delà de ces remarques "de bon sens", il n'y a pas de secret. Un cache peut être contre-productif dans certains cas, le seul moyen fiable est de faire des tests de charge pour comparer.

Dans tous les cas, je te conseille de suivre les étapes suivantes :
- coder sans mettre de cache
- si tu as des problème de perfs, essayer de voir d'où ça vient
- ajouter un système de cache qui résoud ton problème de perfs (si c'est possible)

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 25-01-2011 15:59:37

Stoomm
Membre
Date d'inscription: 06-05-2009
Messages: 48

Re: [Zend_Cache] Retours d'expériences

Bonjour à vous 2 et merci pour vos réponses.

En fait, je suis venu m'interroger sur Zend Cache, car je trouve que globalement, une application faites en Zend me semble un peu plus longue (niveau perf) qu'une application simple en PHP 5 et je me disais donc qu'il y avait peut être moyen de gérer cette problématique en mettant certaines pages en cache, ou données, etc...

Mais comme le dit Mikaelkael, je n'ai pas une problématique sérieuse pour le moment en terme de perf wink

Merci à vous, et si vous voulez apporter de nouvelles lumières, n'hésitez pas wink

Stoomm.

Hors ligne

 

#5 25-01-2011 17:51:13

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Cache] Retours d'expériences

Hello,

La mise en place d'un framework sera toujours plus couteuse qu'un simple fichier PHP. Les avantages sont d'une autre nature (maintenance, extensibilité...). Cependant il existe des règles permettant d'améliorer les performances : http://doczf.mikaelkael.fr/1.11/fr/performance.html

Après il faut faire attention à l'environnement dans lequel tu réalises ces tests, si tu développes sous Windows et que tu trouves que tes performances sont mauvaises, il n'y a rien d'étonnant (entre autres, problème avec le système de fichier en regard de tous les fichiers à charger lors de l'utilisation d'un framework).

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 25-01-2011 18:12:34

Stoomm
Membre
Date d'inscription: 06-05-2009
Messages: 48

Re: [Zend_Cache] Retours d'expériences

Hello smile

On est d'accord sur les avantages et inconvénients d'un framework, il n'y a pas de souci là dessus wink
Merci pour ton lien, je n'avais jamais vu de ce coté là, j'y ai jeté un oeil et je verrais pour aller plus dans le fond ASAP smile

Merci encore wink

Stoomm.

Hors ligne

 

#7 26-01-2011 13:18:05

Stoomm
Membre
Date d'inscription: 06-05-2009
Messages: 48

Re: [Zend_Cache] Retours d'expériences

Hello,

C'est encore moi ! Petite réponse rapide, mais en effet, j'ai mis en place les recommandations de la doc pour la performance : cache sur les métadonnées, sur le translate et sur les plugins (comme quoi, on revient presque à ma question initiale wink).

J'ai également viré les require_once comme préconisé et j'ai fait une build personnalisé de Dojo.
J'ai mis le tout sur un environnement de test chez OVH.

Les temps de réponses sont bons. Je pense que malgré tout, la majeure partie de mes soucis venait de mon environnement de développement Windows et de ma librairie Dojo non buildée. Mais ca reste toujours bon à prendre smile

Merci à tous les 2.

Stoomm.

Hors ligne

 

#8 26-01-2011 14:50:05

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Cache] Retours d'expériences

Hello,

Stoomm a écrit:

Je pense que malgré tout, la majeure partie de mes soucis venait de mon environnement de développement Windows

Oui, il ne faut jamais se fier à un environnement de dev sous Windows. Sur certains projets je passe de 1500ms à 150ms en test et encore un peu moins en prod sur certaines pages.

Effectivement la première utilisation du cache est destinée à certains composants natifs de ZF (comme Zend_Date ou Zend_Translate), à la config et autres détails qui cumulés font la différence.

Mais attention, il faut bien choisir son adapter en fonction de ce qu'on veut mettre en cache. Un cache fichier sera par ex. plus ou moins adapté selon les cas.

De nos jours, il me semble aussi indispensable qu'un serveur de recette utilise un cache d'op-code (APC, eAccelerator, etc.). Pas mal de composants vont l'utiliser, et le framework peut même être compilé entièrement dans la ram (le projet entier d'ailleurs, mais attention aussi que ça ne soit pas contre-productif).

Pour le reste, ce sont des optimisations qui se font en fonction de l'évolution du projet. Attention cependant de bien penser à ça au moment de la conception de l'application, dans son architecture, pour pas que l'intégration d'une gestion de cache remette en cause tout le code et nécessite un refactoring trop important.

Si c'est un projet avec un énorme potentiel et qui prévoit une charge importante, il est primordial que l'archi permette les optimisations futures, clustering, serveur de cache dédiée (Varnish, Solr, par ex), etc.


Le pb en développement, et beaucoup en PHP, c'est que nous sommes souvent des experts en développement, mais des billes en réseau et base de données. Pour concevoir une appli. robuste, il faut connaitre un minimum ces problématiques et se poser la question dès le début, au moment d'architecturer le projet.

Pour des appli de petite et moyenne envergure, le problème se pose moins, une gestion de cache grossière suffit la plupart du temps smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#9 03-02-2011 10:14:22

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: [Zend_Cache] Retours d'expériences

Salut,

J'ai eu l'occasion de m'amuser pas mal avec le cache, que ce soit pour la base de données ou pour d'autres objets donc voila brièvement ce que j'en pense.

D'une manière générale, tu peux (dois) toujours l'utiliser pour certaines parties de ton application (log, acls, i18n, ...).

Ensuite, tu peux également l'utiliser au niveau de ta base pour les metadatas et éventuellement pour les objets complexes. Il faut cependant stocker un minimum de choses et penser au fait que même si tu gagnes du temps pour récupérer ton objet, il ne faut pas trop en perdre lors du flushing.

Enfin, je pense qu'il ne faut pas oublier la gestion du cache des css, js et images de ton site et ce d'une manière générale que tu utilises ZF ou non.

Voila pour ma petite expérience en tout cas.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages