Booster les performances d’eZ Publish

28 juin 2010

Rebondissons sur la eZ Conference 2010 qui s’est déroulé la semaine dernière à Berlin pour parler de l’optimisation de sites web construits à l’aide de eZ Publish. Ce CMS majeur dans l’industrie du contenu online est par de nombreux aspects construit pour servir des pages optimisées aux clients. Voici ici regroupées quelques bonnes pratiques.

Reportez-vous également aux slides d’une des conférences de l’eZ Winter Conference.

Diminuer le nombre de requêtes

Depuis la version 4.2, eZ Publish est livré avec une extension appelée ezJSCore. Bien que présentée comme l’intégration du JavaScript dans le CMS, sa véritable force tient dans la concaténation et la minification des fichiers JS et CSS. Si vous utilisez le template par défaut, tout est déjà fait et il ne vous reste rien à configurer. Les appels aux fichiers JavaScript et feuilles de style se configurent dans design.ini.
Malgré l’excellence de cette extension, certains points pourraient être optimisés :

  • La minification CSS en PHP est très légère et certaines possibilités ne sont pas encore exploitées comme par exemple le recours aux notations courtes de styles (pour margin, padding, border…).
  • La minification JS est basée sur JSMin. Je n’ai pas tenté de la faire fonctionner avec Closure Compiler.
  • Je ne suis pas sûr qu’il soit possible de minifier du JS inliné et généré dans un template. La minification doit intervenir après la génération du template.

Mais la puissance de eZJSCore ne se limite pas à cela.

Utiliser un CDN

Il est aussi possible de spécifier un CDN pour les frameworks JS utilisés. Le fichier de conf de ezjscore.ini est même pré rempli avec le CDN de Google. Ça n’est qu’un détail, mais c’est cela qui fait qu’un CMS est « fast by default ».

Pour la gestion de CDN, il existe une extension non officielle, mais elle utilise un output filter. Cela signifie qu’à chaque appel tout l’HTML de la page passe par le filtre sans que cette opération ne puisse être cachée. Le temps de génération de la page coté serveur peut s’en trouver affecté.

Mettre en cache les ressources

Cet excellent billet reprend quelques bonnes pratiques de mise en cache des pages générées par eZ Publish. On y apprend notamment à jouer avec les fichiers de conf pour spécifier des headers sur les pages générées par le CMS. Là aussi les fonctionnalités existent de base et ne demandent qu’à être activées.

Réduire le poids des ressources

N’oubliez pas de supprimer les informations EXIF des images générées par eZ Publish. Pour cela, passez simplement le preparamètre -strip dans le groupe [ImageMagick] de image.ini:

[ImageMagick]
PreParameters=-strip

Les softs de compression d’images continueront à trouver une marge d’amélioration.

Optimisation coté serveur

eZ Publish possède un système de cache puissant et intelligent qui permet de ne pas trop se préoccuper de l’optimisation du code générant les pages. Il existe cependant quelques bonnes pratiques pour que vos pages soient créées plus rapidement :

  • Utiliser eZ Find dès que vous recherchez des nœuds, notamment lors de la construction de menu de navigation. Cet excellent module permet de rechercher parmi plusieurs milliers d’objets en quelques millisecondes et est plus rapide que le module de recherche par défaut.
  • Utiliser judicieusement les cache-block en paramétrant finement les cache-block key.
  • Dans le même ordre d’idée, évitez l’utilisation d’output filter.

En suivant ces quelques pistes vous pourrez améliorer la génération et le rendu des pages HTML construites sous ez Publish. Dès que ce CMS peut vous aider, il vous aidera, mais pour le reste, c’est à vous de veiller aux autres aspects relatifs aux performances web.

Laisser un commentaire