Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Optimisation des performances d’un site sous TYPO3
1. Optimisation des performances
d’un site sous TYPO3
Aliénor.net : Agence web basée à Bordeaux
Alexandre Gravel-Raymond, Développeur web
a.gravel-raymond@alienor.net
2. Plan
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
3. Solution d'entreprise
Plus de 4000 extensions sur le TYPO3 Extension
Repository (TER)
Gestion multilingue, multidomaine
Workflows
Gestion fine des droits utilisateurs
Rétrocompatibilité primordiale
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
4. Sites web basés sur TYPO3
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
5. Typoscript
Langage de configuration en arbre formant des
templates
Pas de fonctions (mais des références vers des
fonctions PHP)
Pas de variables (mais la possibilité d’utiliser un
registre pour échanger des informations)
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
6. Critiques apportées à TYPO3
L’utilisateur final: impression de lenteur.
L’administrateur système: charge serveur pouvant
devenir importante sur des sites complexes.
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
8. Solutions au problème des
performances
Deux pistes de réflexion:
Gestion fine du cache
Rendre le système plus léger
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
9. Fonctionnement de base du
cache
Les objets typoscript (cObjects) formant un template se
divisent en deux :
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
10. Lors d’une requête sur une
page non présente en cache
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
11. Lors d’une requête sur une
page non présente en cache
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
12. Limite du fonctionnement natif
Toutes les requêtes, y compris celles concernant les
pages déjà en cache, passent par le moteur de
TYPO3
Celui-ci est (très) gourmand en ressources serveur
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
14. Solution fournie par la communauté :
nc_staticfilecache
Extension développée par Netcreators
Multiplie la vitesse de livraison de certaines pages par
230 !
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
15. Extension nc_staticfilecache
Enregistre le rendu dans un fichier HTML statique
Ce fichier est délivré directement par le serveur web s’il existe
Le moteur de TYPO3 n’est pas chargé !
Si le cache statique n’existe pas, le rendu se déroule
normalement
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
16. Avantages de nc_staticfilecache
Suit le vidage de cache « standard » de TYPO3
Possibilité d’étendre les règles de livraison de cache
statique :
Ex : Cookie identifiant les utilisateurs devant avoir
une version 100% dynamique
Possibilité de désactiver pour une page donnée
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
17. Mise en place de nc_staticfilecache
Nécessite Apache et mod_rewrite
Téléchargement et installation de l’extension :
http://forge.typo3.org/projects/extension-nc_staticfilecache
Règles de réécritures fournies dans le .htaccess
Ajout du job cron effectuant la suppression des pages
expirées
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
18. Contraintes de nc_staticfilecache
Aucune page contenant des objets sans cache (_INT)
n’aura de cache statique
Solution pour « personnaliser » le contenu d’une page :
utiliser de l’AJAX !
Les requêtes POST sont exclues, pour que les formulaires
soient dynamiques.
Tous les paramètres de l’URL doivent être réécris (avec
l’extension realurl ou cooluri)
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
19. Si nc_staticfilecache ne peut être
utilisé
Utilisation de Memcached : un système de cache
mémoire distribué
Permet de mettre en cache le résultat de traitements
complexes fréquemment effectués
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
20. Peaufiner le résultat : réduire le
nombre de requêtes
Outils de fusion/minification de CSS et de JS
scriptmerger : Configuration extensive, possibilité
d’exclure des fichiers
load_optimization : Compression HTML, seuls les fichiers
ajoutés via l’API typoscript sont traités
js_css_optimizer : Utilise la nouvelle API du moteur de
rendu, gestion fine fichier par fichier
minify : Simple d’utilisation
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
21. Solutions architecturales
Utiliser eAccelerator pour améliorer les performances
PHP
Utiliser Nginx comme proxy pour délivrer les fichiers
statiques (plus léger qu’Apache)
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
22. Nouveaux systèmes de cache de
TYPO3
Depuis la version 4.3 vers FLOW3
Utilisation de divers backend de cache : fichiers,
mémoire, MySQL
Transparent pour le développeur, beaucoup plus
flexible
enetcache : Extension ajoutant une couche API pour
les plugins.
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
24. Bonne pratique #1
Tu ne désactiveras point le cache. Si tu rencontres des
problèmes de cache, ces méthodes sont à fuir :
www.example.com/?no_cache=1
$GLOBALS[‘TSFE’]->set_no_cache() ;
config.no_cache = 1 (template typoscript)
Case « Sans cache » cochée dans les propriétés de page
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
25. Bonne pratique #2
Tu adapteras la durée du cache à la typologie du projet
Ex : minimum 1 jour pour un site de publication
« classique »
Tu videras le cache d’une page donnée
automatiquement lors d’une modification
Dans le Page TSConfig : TCEMAIN.clearCacheCmd =
1,2,3
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
26. Bonne pratique #3
Tu auditeras les extensions utilisées
Avec l’aide de la communauté…
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
27. Bonne pratique #4
Tu désinstalleras les extensions non utilisées, malgré le
mécanisme d’autoloading introduit dans TYPO3 4.3,
pour éviter de charger inutilement du code PHP et
typoscript
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
28. Bonne pratique #5
Tu diminueras la complexité des templates typoscript
Il est possible d’effectuer des tâches très complexes en
pur typoscript, mais il est parfois plus efficace (et lisible)
d’encapsuler la fonctionnalité dans une classe PHP.
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
29. Bonne pratique #6
Tu éviteras si possible de passer par le moteur de TYPO3
Les pages 404 ont-elle besoin de tout le moteur ?
Préférer l'utilisation de la déclaration ErrorDocument
dans un fichier .htaccess
Les scripts AJAX peuvent être externalisés :
Utiliser la méthode standard de TYPO3 :
www.example.com/index.php?eID=mon_ajax
Ne charge que les classes indispensables du coeur de TYPO3.
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
30. Bonne pratique #7
Tu ajouteras des index aux tables SQL créées pour les
extensions développées, notamment si elles ont été
créées par le Kickstarter
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions