Optimisation des performances d’un site sous TYPO3

31
Optimisation des performances d’un site sous TYPO3 Aliénor.net : Agence web basée à Bordeaux Alexandre Gravel-Raymond, Développeur web [email protected]

Transcript of Optimisation des performances d’un site sous TYPO3

Page 1: 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

[email protected]

Page 2: Optimisation des performances d’un site sous TYPO3

Plan

I – Présentation de TYPO3

II - Performance et limites du fonctionnement natif

III - Les solutions

Page 3: Optimisation des performances d’un site sous TYPO3

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

Page 4: Optimisation des performances d’un site sous TYPO3

Sites web basés sur TYPO3

I – Présentation de TYPO3II - Performance et limites du fonctionnement natif

III - Les solutions

Page 5: Optimisation des performances d’un site sous TYPO3

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

Page 6: Optimisation des performances d’un site sous TYPO3

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

Page 7: Optimisation des performances d’un site sous TYPO3

Performance et limites du fonctionnement natif

Page 8: Optimisation des performances d’un site sous TYPO3

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

Page 9: Optimisation des performances d’un site sous TYPO3

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

Page 10: Optimisation des performances d’un site sous TYPO3

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

Page 11: Optimisation des performances d’un site sous TYPO3

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

Page 12: Optimisation des performances d’un site sous TYPO3

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

Page 13: Optimisation des performances d’un site sous TYPO3

Les solutions

Page 14: Optimisation des performances d’un site sous TYPO3

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

Page 15: Optimisation des performances d’un site sous TYPO3

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

Page 16: Optimisation des performances d’un site sous TYPO3

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

Page 17: Optimisation des performances d’un site sous TYPO3

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

Page 18: Optimisation des performances d’un site sous TYPO3

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

Page 19: Optimisation des performances d’un site sous TYPO3

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

Page 20: Optimisation des performances d’un site sous TYPO3

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

Page 21: Optimisation des performances d’un site sous TYPO3

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

Page 22: Optimisation des performances d’un site sous 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.

Nouveaux systèmes de cache de TYPO3

I – Présentation de TYPO3II - Performance et limites du fonctionnement natif

III - Les solutions

Page 23: Optimisation des performances d’un site sous TYPO3

Les bonnes pratiques

Page 24: Optimisation des performances d’un site sous TYPO3

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

Page 25: Optimisation des performances d’un site sous TYPO3

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

Page 26: Optimisation des performances d’un site sous TYPO3

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

Page 27: Optimisation des performances d’un site sous TYPO3

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

Page 28: Optimisation des performances d’un site sous TYPO3

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

Page 29: Optimisation des performances d’un site sous TYPO3

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

Page 30: Optimisation des performances d’un site sous TYPO3

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

Page 31: Optimisation des performances d’un site sous TYPO3

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/