2010-06-15 6 views
1

J'ai créé un blog à l'aide de Zend Framework, que je réalise peut-être un peu trop pour un blog seul, mais je prévois d'ajouter d'autres fonctionnalités dans le futur. Néanmoins, j'ai remarqué que les pages pourraient être un peu plus rapides. J'ai fait une méthode de mise en cache de base qui capture tout ce qui est index.php (Core frontend et File backend), ce qui fonctionne très bien, mais empêche aussi la mise à jour des contenus dynamiques (messages comme "ceci a été posté il y a 5 minutes", etc) jusqu'à ce que la période de cache expire. Donc, ma question est quelle serait la meilleure méthode de mise en cache pour améliorer les performances? Je fais des requêtes assez basiques qui sont pour la plupart des sélections simples, pas beaucoup de jointures ou quelque chose de fantaisie (en utilisant Zend_Db_Table), et même sur une petite page de base de données, les charges sont un peu lentes. Cela vaut-il la peine de mettre en cache des requêtes ou devrais-je concentrer mon temps ailleurs?Meilleure méthode de mise en cache de Zend Framework

+0

Quand tu cache le déclenchement: première lecture ou à publier? – allnightgrocery

+1

avez-vous profilé le projet pour détecter quel est le goulot d'étranglement actuel? – zerkms

Répondre

1

Pour activer le type de dynamique de votre rendu ("posted X minutes ago"), vous pouvez pousser la mise en cache un peu plus en amont. Ne mettez pas en cache la sortie html, cachez simplement les données renvoyées à partir de la requête. Ensuite, votre code de rendu a toujours accès à la date affichée data et votre code de rendu peut l'utiliser.

Bien sûr, @zerkms a raison. Le profilage est nécessaire pour identifier les goulots d'étranglement.

0

La mise en mémoire cache peut être implémentée dans le futur si les performances actuelles sont satisfaisantes. Mes conseils seraient:

  • optimize frontend première (compression CSS, JS, fusionner en un seul fichier, éviter de multiples demandes, voir les règles Yahoo pour la performance)
  • utilisation du cache opcode
  • il y a déjà la page backend dans ZF pour la mise en cache des pages entières (vous l'avez configuré dans index.php)
  • Si le chiffre ci-dessus ne vous suffit pas, profilez votre application (par exemple en utilisant ZFDebug), et voyez quel est le problème. Ensuite, choisissez le bon outil pour le travail.
  • voir ma réponse pour Zend_Cache_Backend_Sqlite vs Zend_Cache_Backend_File
Questions connexes