Optimisation des performances d’un site sous...

Post on 31-Jul-2020

2 views 0 download

Transcript of Optimisation des performances d’un site sous...

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

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/