2010-03-21 4 views
1

Est-ce que quelqu'un sait s'il existe un aperçu des performances des différents gestionnaires de cache pour smarty? J'ai comparé le cache de fichiers smarty avec un gestionnaire memcache, mais il semble que memcache ait un impact négatif sur les performances. Je pensais qu'il y aurait un moyen plus rapide de mettre en cache que par le biais du système de fichiers ... ai-je tort?LE FASTEST Smarty Cache Handler

Répondre

1

Je n'ai pas de réponse systématique pour vous, mais d'après mon expérience, le cache de fichiers est le plus rapide. Je dois préciser que je n'ai pas fait de tests de performance sérieux, mais depuis que j'ai utilisé Smarty, j'ai trouvé que le cache de fichiers fonctionnait mieux.

Un ceci qui améliore définitivement les performances est de désactiver la vérification si les fichiers modèles ont changé. Cela évite d'avoir à stat les fichiers tpl.

1

La mise en cache de fichiers est possible lorsque vous utilisez une instance de serveur unique ou un lecteur partagé (NFS) dans un cluster de serveurs, mais que vous avez un cluster de serveurs Web (deux ou plusieurs serveurs Web desservant le même contenu). La mise en cache basée sur les fichiers n'est pas synchronisée sur les serveurs Web. Pour effectuer un simple rsync sur les répertoires de mise en cache est sujet à erreur. Peut fonctionner parfaitement pendant un certain temps, mais pas une solution stable. La meilleure solution pour un cluster consiste à utiliser la mise en cache distribuée, à savoir memcache, qui est un serveur distinct exécutant une instance memcached et chaque serveur Web a installé PHP Memcache. Chaque serveur vérifiera alors l'existence d'une page/d'un élément mis en cache et, s'il existe, tire de memcache sinon générera à partir de la base de données, puis sauvegardera dans memcached. Lorsque vous travaillez avec des clusters, vous ne pouvez pas lésiner sur un bon mécanisme de mise en cache. Si vous travaillez avec des clusters, votre site a déjà plus de trafic (ou le sera) pour un seul serveur.

Il existe un environnement de cluster de niveau débutant qui peut être implémenté pour un coût relativement faible. Vous pouvez configurer deux serveurs colocalisés (équilibreur de charge nginx et un serveur memcached), puis en utilisant l'hébergement Web partagé gratuit, vous créez un compte du même domaine sur ces comptes d'hébergement gratuits et installez votre contenu. Vous configurez votre équilibreur de charge nginx pour qu'il pointe vers les adresses IP des hôtes Web gratuits. Les hôtes web libres doivent avoir installé php5 memcache sinon la solution ne fonctionnera pas.

Ensuite, vous définissez DNS pour le domaine avec le bureau d'enregistrement pour pointer l'IP NGINX (qui serait une adresse IP statique si vous colocate). Désormais, lorsque quelqu'un accède à votre domaine, nginx redirige vers l'un de vos clusters de serveurs Web situés sur l'hébergement gratuit.

Vous pouvez également envisager d'utiliser un CDN pour décharger le trafic lors du traitement du contenu statique.