Date de publication: le samedi 12 avril 2008 à 18h13
Dernière modification: par Pascal BOYER le dimanche 26 septembre 2010 à 22h33
« Article précédent: Internal caches / Caches internes
» Article suivant: Good template practices / Les bonnes pratiques avec les templates
eZ Publish has its own powerful template language. This section looks at a few cases where you can improve site performance by optimizing the templates.
eZ Publish possède son propre langage de template. Langage très puissant. Ce chapitre présente différents cas pour lesquels vous pouvez améliorer les performances de votre site en optimisant les templates.
What not to do in templates / Ce qu'il ne faut pas faire dans les templates
The eZ Publish template language should not be treated as a general-purpose programming language. When application logic is added to the template itself it reduces website performance.
Le langage de template de eZ Publish ne doit pas être considéré comme un langage de programmation objet (???). Lorsqu'un traitement logique (???) est ajouté au template lui-même cela réduit les performances du site.
An example of sub-optimal logic in templates is:
Un exemple de traitement logique sous-optimisé dans un template est:
-
Fetch all articles and users to arrays.
Rechercher tous les articles et utilisateurs dans des tables -
Use a foreach template construct to iterate through all articles to find out which authors have written which articles.
Utiliser la construction foreach pour itérer tous les articles afin de trouver les auteurs ayant écrit ces articles. -
Display the result with another foreach construct for each article.
Afficher, pour chaque article, le résultat avec une autre construction foreach .
This scenario is not desirable for the following reasons:
Ces scénaris ne sont pas souhaitables pour les raisons suivantes:
-
Fetching many objects takes up a lot of memory.
Rechercher de nombreux objets demande beaucoup de mémoire
-
Fetching large object lists is slow.
Rechercher une grande quantité d'objets n'est pas une opération rapide
-
Doing compare logic on large object sets in the template language is much slower than in PHP or in SQL.
Faire une comparaison logique sur une grande quantité d'objets dans le langage de template est plus lent qu'en PHP ou qu'en SQL.
It is bad practice to have logic like this in the template itself. In cases where you find yourself adding more and more logic to the template code, ask yourself whether it can be implemented as a separate module, template operator or as an extension to eZ Publish. Doing the example above in pure SQL with a template operator is many times faster than doing it in the template.
C'est une mauvaise pratique que de réaliser de telles opérations logiques dans le template lui-même. Lorsque vous vous retrouvez à ajouter de plus en plus de ces opérations au code de vos templates, posez-vous la question de savoir s'il n'est pas possible de les implémenter dans un module séparé, dans un opérateur de template ou en tant qu'extension de eZ Publish. Réaliser les opérations données en exemple ci-dessus en pure SQL à l'aide d'un opérateur de template est plusieurs fois plus rapide qu'avec du langage de template.
Commentaires














