Optimisation des performances d’un site sous TYPO3
-
Upload
alienornet -
Category
Technology
-
view
4.193 -
download
3
Transcript of Optimisation des performances d’un site sous TYPO3
Optimisation des performances d’un site sous TYPO3
Aliénor.net : Agence web basée à Bordeaux
Alexandre Gravel-Raymond, Développeur web
Plan
I – Présentation de TYPO3
II - Performance et limites du fonctionnement natif
III - Les solutions
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 TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Solution d'entreprise
Sites web basés sur TYPO3
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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)
Typoscript
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
L’utilisateur final: impression de lenteur.
L’administrateur système: charge serveur pouvant
devenir importante sur des sites complexes.
Critiques apportées à TYPO3
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Performance et limites du fonctionnement natif
Deux pistes de réflexion:
Gestion fine du cache
Rendre le système plus léger
Solutions au problème des performances
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Les objets typoscript (cObjects) formant un template se divisent en deux :
Fonctionnement de base du cache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Lors d’une requête sur une page non présente en cache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Lors d’une requête sur une page non présente en cache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Limite du fonctionnement natif
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Les solutions
Extension développée par Netcreators
Multiplie la vitesse de livraison de certaines pages par
230 !
Solution fournie par la communauté : nc_staticfilecache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Extension nc_staticfilecache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Avantages de nc_staticfilecache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Mise en place de nc_staticfilecache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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)
Contraintes de nc_staticfilecache
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Si nc_staticfilecache ne peut être utilisé
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Outils de fusion/minification de CSS et de JSscriptmerger : Configuration extensive, possibilité d’exclure des fichiersload_optimization : Compression HTML, seuls les fichiers ajoutés via l’API typoscript sont traitésjs_css_optimizer : Utilise la nouvelle API du moteur de rendu, gestion fine fichier par fichierminify : Simple d’utilisation
Peaufiner le résultat : réduire le nombre de requêtes
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Utiliser eAccelerator pour améliorer les performances
PHP
Utiliser Nginx comme proxy pour délivrer les fichiers
statiques (plus léger qu’Apache)
Solutions architecturales
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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.
Nouveaux systèmes de cache de TYPO3
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Les bonnes pratiques
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
Bonne pratique #1
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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 modificationDans le Page TSConfig : TCEMAIN.clearCacheCmd =
1,2,3
Bonne pratique #2
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Tu auditeras les extensions utilisées
Avec l’aide de la communauté…
Bonne pratique #3
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Bonne pratique #4
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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.
Bonne pratique #5
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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_ajaxNe charge que les classes indispensables du coeur de TYPO3.
Bonne pratique #6
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
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
Bonne pratique #7
I – Présentation de TYPO3II - Performance et limites du fonctionnement natif
III - Les solutions
Sources et lectures
http://wiki.typo3.org/index.php/Performance_tuning
http://typo3.org/development/articles/testing-and-
tuning-typo3-performance/
http://techblog.evo.pl/en/evo_nginx_boost-extension/
http://www.typofree.org/article/archive/2009/august/
title/enabling-nc-staticfilecache-in-typo3-nginx/
http://typo3.org/development/articles/using-cache-
control-headers-in-typo3/