SlideShare uma empresa Scribd logo
1 de 38
Hautes performances
& TYPO3
2
QUI SUIS-JE ?
ROMAIN LELEU
Responsable Technique
Direction Technique Groupe Smile
T3Uni 2015
Hautes performances & TYPO3
Partenaire GOLD
&
Des collaborateurs
experts et certifiés
T3UNI FR,
T3CON EU,
Code Sprint
3
PERFORMANCES
De vitesse !
 Essentiellement le temps entre une requête et :
o l’affichage « au dessus de la ligne de flottaison »
o l’affichage complet de la réponse
De résistance aux pics de charge
 Période de solde ? Actualité chaude ?
Ces 2 facteurs sont intimement liés
Le temps est relatif, avec des seuils psychologiques
 < 100ms = instantané
 ~ 1sec = chargement perceptible
 > 2sec = attente = frustration
 9.58sec = une éternité
T3Uni 2015
Hautes performances & TYPO3
DE QUOI PARLE-T-ON ?
4
PERFORMANCES
Plus de clients
Selon Akamai 40% des internautes n’attendent pas 3 secondes.
Le mobile impose des contraintes supplémentaires.
S’adresser à des zones géographiques plus larges.
Plus de satisfaction
Meilleure image de marque.
Donner l’envie de revenir.
Meilleur référencement
Critère de référencement Google depuis 2010.
Moins de ressources consommées = économies
Dépenses d’hébergement réduites.
T3Uni 2015
Hautes performances & TYPO3
POURQUOI ?
5
PERFORMANCES
Votre « site » ? Mais encore…
T3Uni 2015
Hautes performances & TYPO3
MON SITE EST LENT…
Pour obtenir de bonnes performances
il faut s’intéresser à tous les
maillons de la chaine
7
OPTIMISER LE
T3Uni 2015
Hautes performances & TYPO3
FRONTEND
8
OPTIMISER LE FRONTEND
Des ressources externes - souvent bloquantes
 Impliquent des requêtes réseau supplémentaires
 Le navigateur doit attendre leur réception pour pouvoir « comprendre », charger la
ressource suivante et enfin afficher la page
Organiser et retravailler ces ressources
 Réduire l’accès à des fichiers externes
o concaténation, utiliser les CDN publics (CDNJS Cloudflare, Google)
 Réduire leur taille
o cascade, url relatives, minification, compression
 Intégrer le minimum vital directement dans le corps de la page
Décaler le chargement du reste
o Balises <link> & <script> en fin de page
o Attribut « async »
T3Uni 2015
Hautes performances & TYPO3
CSS & JS
9
OPTIMISER LE FRONTEND
TYPO3 propose beaucoup de réglages
 config.compressJs // config.compressCss
 config.concatenateJs // config.concatenateCss // config.concatenateJsAndCss
 page {
includeJS {
async
disableCompression
excludeFromConcatenation
}
includeJSFooter
includeJSLibs
includeJSFooterlibs
jsInline
jsFooterInline
includeCSS
includeCSSLibs
}
 $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel']
Et pourtant certains cas ne sont pas intégrables facilement 
 Heureusement les extensions et le Typoscript sont là
T3Uni 2015
Hautes performances & TYPO3
CSS & JS
10
FRONTEND
Images = temps de chargement à surveiller
Les points d’attention
 Format de fichier: JPEG & PNG en priorité
 Beaucoup de ressources: sprite CSS
 Dimensions des images selon la cible
 Demain: WebP ?
TYPO3 propose des outils complets
 Conversion de format
 Redimensionnement
 Suppression des meta-data
 Responsive image
T3Uni 2015
Hautes performances & TYPO3
IMAGES
11
FRONTEND
Exploiter le cache des navigateurs
 Librairies JS depuis les CDN publics
 Définir les en-têtes:
o « Expires » ou « Cache-control »
o « Etag » ou « Last-Modified »
 Configurer l’envoi des en-têtes dans TYPO3
o Typoscript: config.sendCacheHeader
 TYPO3 ajoute automatiquement un timestamp aux ressources générées
 pas de problème d’invalidation de cache
/typo3temp/compressor/merged-8cf49e3.css?1435048000
T3Uni 2015
Hautes performances & TYPO3
MISE EN CACHE
12
FRONTEND
Permet de ne pas recharger une page complète
Single Page Application (SPA)  idéal pour un flux JSON
EID & Widget: Bootstrap du noyau plus léger
 Consommation CPU et mémoire réduite
 N’activera que ce qui est demandé
o Base de données
o User
 Simplicité d’utilisation
Exemple: <f:widget.paginate>
T3Uni 2015
Hautes performances & TYPO3
PAGE TYPE, EID & WIDGET
13
OPTIMISER
T3Uni 2015
Hautes performances & TYPO3
TYPO3
14
OPTIMISER TYPO3
TYPO3 propose un cache efficace
Il est indispensable de l’exploiter et de comprendre son fonctionnement
Différents types de cache
 Cache de configuration
 Cache de code (TSconfig: options.clearCache.system = 1 )
 Cache de page
Cache de page = page + blocs
Exploiter correctement les USER/USER_INT et le cHash
Tout est expliqué dans la doc TYPO3 !
Configurer les caches
 Durée
 Backend: fichiers, SQL, Redis, APC, Memcached
T3Uni 2015
Hautes performances & TYPO3
LE CACHE - PRINCIPES
15
OPTIMISER TYPO3
Définir des politiques de cache différentes dans une même page
T3Uni 2015
Hautes performances & TYPO3
LE CACHE – PAR BLOCS ?
16
OPTIMISER TYPO3
Différents content objects
 USER/USER_INT & COA/COA_INT
 A la base du cache par blocs
stdWrap.cache
Gestion des clés, des tags et de la durée
HMENU.cachePeriod
Menu = beaucoup de typolink = lent
24h par défaut, peut souvent être étendu
ViewHelper render.cache (VHS)
{v:render.cache(identity: [mixed], content: [mixed], onError: 'NULL', graceful: 1)}
nc_static_filecache
Créé une version HTML statique de la page. Mod Rewrite sert ces fichiers en priorité.
Ne fonctionne que sur des pages entièrement en cache (pas de USER_INT !).
T3Uni 2015
Hautes performances & TYPO3
LE CACHE – OUTILS
17
OPTIMISER TYPO3
Certaines versions sont plus performantes que d’autres
Version 7.1 et supérieures
 Suppression du « code mort » et des alias de classes
 Autoloader PSR-4 de Composer (backporté en 6.2.10)
 Frameworks javascript plus légers
 ViewHelpers compilables
 Compatibilité avec les versions de PHP 5.5 et supérieures
 Compression et concaténation CSS/JS améliorées
T3Uni 2015
Hautes performances & TYPO3
LE BON NOYAU
18
OPTIMISER TYPO3
Désactiver les sessions Frontend
Désactiver les FeGroup et les FeUser
 Pas d’authentification ? Pourquoi s’embêter !
Désactiver les extensions « lourdes »
 Workspaces
 Versionning
 Dbal
 Compatibility6
Désactiver les logs les plus détaillées en production
 Deprecation Log
T3Uni 2015
Hautes performances & TYPO3
RÉDUIRE L’EMPREINTE DU NOYAU
19
OPTIMISER TYPO3
Désactiver les caches
 TSFE->set_no_cache()
 ?no_cache=1
 USER_INT à la place d’un USER avec un cHash
Conditions Typoscripts
 Chaque cas d’une condition = un hash différent = un cache différent 
 Remplacer le baseURL et ses conditions par un « config.absRefPrefix »
Le mauvais code PHP
 Développements spécifiques
 Extensions communautaires non auditées
 Erreurs, Warnings et Notices sont couteux en ressources
T3Uni 2015
Hautes performances & TYPO3
CES CHOSES À ÉVITER
20
OPTIMISER
T3Uni 2015
Hautes performances & TYPO3
L’INFRASTRUCTURE
21
OPTIMISER L’INFRASTRUCTURE
Apache c’est lourd, remplaçons le par Nginx
 Fausse bonne idée !
o Cela ne change rien sur les pages TYPO3 (et le PHP en général)
o Apache 2.4 se permet même d’aller un peu plus vite à condition de désactiver
le support des .htaccess
 Oui mais les fichiers statiques ? Il y a mieux que Nginx pour ça…
Configurer mod_expires et mod_deflate
Pré-requis essentiels pour une bonne gestion des ressources Frontend.
TYPO3 fournis quelques exemples dans sont fichiers .htaccess.
Désactiver le support des .htaccess
T3Uni 2015
Hautes performances & TYPO3
APACHE
22
OPTIMISER L’INFRASTRUCTURE
Plus PHP est récent plus il va vite.
 Moins de consommation mémoire, plus de vitesse
 PHP 5.6 = ♥
 PHP 7 = PHP NG = ♥ ♥ ♥
o Wordpress est 2 fois plus rapide, 75% de consommation CPU en moins
o Plus rapide que HHVM ! 39% d’amélioration sur Laravel
o Disponibilité annoncée pour octobre 2015 (sources: Zend.com)
Cache d’opcode
 APC / Opcache selon la version de PHP
 De x2 à x10 en temps d’exécution
PHP-FPM = fastCGI sans les défauts
Surveiller les logs
 Chaque log est couteux. Eviter les erreurs/warning/notice.
T3Uni 2015
Hautes performances & TYPO3
PHP
23
OPTIMISER L’INFRASTRUCTURE
T3Uni 2015
Hautes performances & TYPO3
PHP – CACHE D’OPCODE ?
24
OPTIMISER L’INFRASTRUCTURE
MySQL 5.7 = gain de performance
 Moteur InnoDB largement amélioré
 IOPS: 2x plus que 5.6 // 3x plus que 5.5 (iops = input/output per second) (source: Sysbench)
 Sharding facilité par « Fabric » et une réplication améliorée
Configuration et hardware adaptés
 Allouer la mémoire nécessaire aux buffers et index
 SSD / FusionIO & RAM conséquente
Développements spécifiques
 Penser à ajouter des index pertinents !
 Activer l’extension indexed_search_mysql
Analyser les requêtes et surveiller les logs
 En particulier le Slow Query
Maria DB et Percona sont des alternatives à surveiller
T3Uni 2015
Hautes performances & TYPO3
MYSQL
25
OPTIMISER L’INFRASTRUCTURE
Varnish
 Son but principal: décharger le serveur HTTP
o Supporte plusieurs milliers de requêtes par seconde
 Load balancing / Failover
 WAF (un peu seulement)
Conjuguer TYPO3 et ESI
 ESI = Edge Side Include
o <esi:include src="index$(GEO{'country_code'}|'US').html" alt="indexUS.html"
ttl="2h" maxwait="5000"/>
o Peut contenir des règles de calcul avancées
 Le mécanisme colle au principe du cache par bloc de TYPO3
Plusieurs extensions TYPO3 facilitent la gestion du cache
 moc_varnish, varnish, vcc, proxycachemanager
T3Uni 2015
Hautes performances & TYPO3
PROXY CACHE HTTP
26
OPTIMISER L’INFRASTRUCTURE
Où dans l’infrastructure ?
T3Uni 2015
Hautes performances & TYPO3
PROXY CACHE HTTP
27
OPTIMISER L’INFRASTRUCTURE
Quelle logique ?
T3Uni 2015
Hautes performances & TYPO3
PROXY CACHE HTTP
28
OPTIMISER L’INFRASTRUCTURE
Rapprocher le contenu du visiteur
Répondre plus vite
Répartir la charge
Quelques solutions
 Akamai FastDNS & AuraCDN
 Amazon Route53 & CloudFront
 CloudFlare
 Extension TYPO3: smile_cdn
Défaut principal: vidage du cache pas toujours facile
 A réserver aux ressources statiques plutôt qu’aux pages
Solutions gratuites
 CDN publics pour les Javascripts
 Utiliser un domaine différent pour servir les ressources statiques + varnish
T3Uni 2015
Hautes performances & TYPO3
CDN & DNS
29
OPTIMISER L’INFRASTRUCTURE
Scaling horizontal
 Améliore aussi la disponibilité en cas de panne
 Ajouter des serveurs web
o Gestion des sessions PHP dans Redis
o Synchronisation du système de fichiers (SAN)
 Ajouter des serveurs MySQL
o Répartition Master/Slave
o Diriger les requêtes SELECT en priorité vers les Slaves
 MySQL Proxy
 Backend MySQL spécial pour TYPO3
 Solutions Cloud type Amazon (EC2 + S3 + RBS)
Scaling vertical
 Ne pas rester sur des vieilles machines !
 Peu complexe à mettre en place
T3Uni 2015
Hautes performances & TYPO3
SCALING
30
T3Uni 2015
Hautes performances & TYPO3
ANALYSER
& TESTER
31
TESTER & ANALYSER
La première étape avant d’agir
 Pour mieux cibler nos efforts
 Pour quantifier les gains
Se placer dans un environnement adapté
 Stable
 Permettant de faire varier un seul paramètre à la fois
 Des outils suffisamment puissants pour simuler une charge importante
 Le bon outil pour le bon test
T3Uni 2015
Hautes performances & TYPO3
AVANT TOUTE CHOSE…
32
TESTER & ANALYSER
Analyse
 PageSpeed (Google)
 Yslow (Yahoo)
 GTMetrix
 Webpagetest.org
 PingDom
 Profilers PHP: BlackFire / Xhprof / Xdebug
 Et bien sur les logs des applications !
Monitoring
 New Relic
Montée en charge
 jMeter /ApacheBench / Siege / Tsung
T3Uni 2015
Hautes performances & TYPO3
LES BONS OUTILS
33
TESTER & ANALYSER
T3Uni 2015
Hautes performances & TYPO3
LES BONS OUTILS – MESURES AVEC GTMETRIX
34
TESTER & ANALYSER
T3Uni 2015
Hautes performances & TYPO3
LES BONS OUTILS – PROFILING PHP
C’est bien tout ça
mais par où commencer ?
36
HAUTES PERFORMANCES & TYPO3
Viser les macro-optimisations en premier
 Donne les résultats les plus visibles, rapidement
 Même s’il est tentant de ne creuser qu’une direction
Identifier les pages critiques et leur point de blocage
 La page d’accueil concentre la plupart des hits
 Elle est souvent le point de départ
Tester, analyser et surveiller en continu
 Le site et les visiteurs évoluent: de nouveaux blocages peuvent apparaitre
Chercher la simplicité: KISS
Exploiter le cache TYPO3 et Varnish !
T3Uni 2015
Hautes performances & TYPO3
PAR OÙ COMMENCER ?
37
HAUTES PERFORMANCES & TYPO3
Wiki TYPO3
 http://wiki.typo3.org/Performance_tuning
Mailing List « TYPO3 Performance »
 http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-performance
Slack
 https://forger.typo3.org/slack
Et pout tout le reste Google, StackOverflow, SlideShare…
T3Uni 2015
Hautes performances & TYPO3
OÙ TROUVER LES INFOS ?
QUESTIONS ?

Mais conteúdo relacionado

Destaque

Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Smile I.T is open
 
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Smile I.T is open
 
Demarche de cadrage Big data
Demarche de cadrage Big dataDemarche de cadrage Big data
Demarche de cadrage Big dataSmile I.T is open
 
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Smile I.T is open
 
Seminaire communication unifiee
Seminaire communication unifieeSeminaire communication unifiee
Seminaire communication unifieeSmile I.T is open
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSmile I.T is open
 
Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Smile I.T is open
 
Business line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationBusiness line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationSmile I.T is open
 
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisite
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisiteCMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisite
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisiteSmile I.T is open
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSmile I.T is open
 
Le casse-tête de l'organisation digitale
Le casse-tête de l'organisation digitaleLe casse-tête de l'organisation digitale
Le casse-tête de l'organisation digitalePetit Web
 
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...Business & Decision
 

Destaque (20)

Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015
 
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
 
Demarche de cadrage Big data
Demarche de cadrage Big dataDemarche de cadrage Big data
Demarche de cadrage Big data
 
Séminaire drupal8 Lyon
Séminaire drupal8 LyonSéminaire drupal8 Lyon
Séminaire drupal8 Lyon
 
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
 
Seminaire communication unifiee
Seminaire communication unifieeSeminaire communication unifiee
Seminaire communication unifiee
 
Webinar Smile et WSO2
Webinar Smile et WSO2Webinar Smile et WSO2
Webinar Smile et WSO2
 
Offre Search
Offre SearchOffre Search
Offre Search
 
Dam et e-business
Dam et e-businessDam et e-business
Dam et e-business
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à Nantes
 
Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !
 
Seminaire drupal8 Lille
Seminaire drupal8 LilleSeminaire drupal8 Lille
Seminaire drupal8 Lille
 
Business line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationBusiness line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentation
 
Séminaire drupal8.final
Séminaire drupal8.finalSéminaire drupal8.final
Séminaire drupal8.final
 
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisite
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisiteCMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisite
CMSday 2103 - Ametys : Gestion fine des contenus dans un environnement multisite
 
Architecture Orientee Ressource
Architecture Orientee RessourceArchitecture Orientee Ressource
Architecture Orientee Ressource
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application Métier
 
Etude sur le Big Data
Etude sur le Big DataEtude sur le Big Data
Etude sur le Big Data
 
Le casse-tête de l'organisation digitale
Le casse-tête de l'organisation digitaleLe casse-tête de l'organisation digitale
Le casse-tête de l'organisation digitale
 
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...
Business & Decision - Big Data : Retours d'expériences concrets - Congrès Big...
 

Mais de Smile I.T is open

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionSmile I.T is open
 
Deploy your contents with entity share
Deploy your contents with entity share   Deploy your contents with entity share
Deploy your contents with entity share Smile I.T is open
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018Smile I.T is open
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSmile I.T is open
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Smile I.T is open
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Smile I.T is open
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featuresSmile I.T is open
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSmile I.T is open
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Smile I.T is open
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Smile I.T is open
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Smile I.T is open
 

Mais de Smile I.T is open (13)

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon Session
 
Deploy your contents with entity share
Deploy your contents with entity share   Deploy your contents with entity share
Deploy your contents with entity share
 
ROM Android Customs
ROM Android Customs ROM Android Customs
ROM Android Customs
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory features
 
Les quick wins de l'UX
Les quick wins de l'UXLes quick wins de l'UX
Les quick wins de l'UX
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2
 

TYPO3 et hautes performances - T3UNI 2015

  • 2. 2 QUI SUIS-JE ? ROMAIN LELEU Responsable Technique Direction Technique Groupe Smile T3Uni 2015 Hautes performances & TYPO3 Partenaire GOLD & Des collaborateurs experts et certifiés T3UNI FR, T3CON EU, Code Sprint
  • 3. 3 PERFORMANCES De vitesse !  Essentiellement le temps entre une requête et : o l’affichage « au dessus de la ligne de flottaison » o l’affichage complet de la réponse De résistance aux pics de charge  Période de solde ? Actualité chaude ? Ces 2 facteurs sont intimement liés Le temps est relatif, avec des seuils psychologiques  < 100ms = instantané  ~ 1sec = chargement perceptible  > 2sec = attente = frustration  9.58sec = une éternité T3Uni 2015 Hautes performances & TYPO3 DE QUOI PARLE-T-ON ?
  • 4. 4 PERFORMANCES Plus de clients Selon Akamai 40% des internautes n’attendent pas 3 secondes. Le mobile impose des contraintes supplémentaires. S’adresser à des zones géographiques plus larges. Plus de satisfaction Meilleure image de marque. Donner l’envie de revenir. Meilleur référencement Critère de référencement Google depuis 2010. Moins de ressources consommées = économies Dépenses d’hébergement réduites. T3Uni 2015 Hautes performances & TYPO3 POURQUOI ?
  • 5. 5 PERFORMANCES Votre « site » ? Mais encore… T3Uni 2015 Hautes performances & TYPO3 MON SITE EST LENT…
  • 6. Pour obtenir de bonnes performances il faut s’intéresser à tous les maillons de la chaine
  • 7. 7 OPTIMISER LE T3Uni 2015 Hautes performances & TYPO3 FRONTEND
  • 8. 8 OPTIMISER LE FRONTEND Des ressources externes - souvent bloquantes  Impliquent des requêtes réseau supplémentaires  Le navigateur doit attendre leur réception pour pouvoir « comprendre », charger la ressource suivante et enfin afficher la page Organiser et retravailler ces ressources  Réduire l’accès à des fichiers externes o concaténation, utiliser les CDN publics (CDNJS Cloudflare, Google)  Réduire leur taille o cascade, url relatives, minification, compression  Intégrer le minimum vital directement dans le corps de la page Décaler le chargement du reste o Balises <link> & <script> en fin de page o Attribut « async » T3Uni 2015 Hautes performances & TYPO3 CSS & JS
  • 9. 9 OPTIMISER LE FRONTEND TYPO3 propose beaucoup de réglages  config.compressJs // config.compressCss  config.concatenateJs // config.concatenateCss // config.concatenateJsAndCss  page { includeJS { async disableCompression excludeFromConcatenation } includeJSFooter includeJSLibs includeJSFooterlibs jsInline jsFooterInline includeCSS includeCSSLibs }  $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] Et pourtant certains cas ne sont pas intégrables facilement   Heureusement les extensions et le Typoscript sont là T3Uni 2015 Hautes performances & TYPO3 CSS & JS
  • 10. 10 FRONTEND Images = temps de chargement à surveiller Les points d’attention  Format de fichier: JPEG & PNG en priorité  Beaucoup de ressources: sprite CSS  Dimensions des images selon la cible  Demain: WebP ? TYPO3 propose des outils complets  Conversion de format  Redimensionnement  Suppression des meta-data  Responsive image T3Uni 2015 Hautes performances & TYPO3 IMAGES
  • 11. 11 FRONTEND Exploiter le cache des navigateurs  Librairies JS depuis les CDN publics  Définir les en-têtes: o « Expires » ou « Cache-control » o « Etag » ou « Last-Modified »  Configurer l’envoi des en-têtes dans TYPO3 o Typoscript: config.sendCacheHeader  TYPO3 ajoute automatiquement un timestamp aux ressources générées  pas de problème d’invalidation de cache /typo3temp/compressor/merged-8cf49e3.css?1435048000 T3Uni 2015 Hautes performances & TYPO3 MISE EN CACHE
  • 12. 12 FRONTEND Permet de ne pas recharger une page complète Single Page Application (SPA)  idéal pour un flux JSON EID & Widget: Bootstrap du noyau plus léger  Consommation CPU et mémoire réduite  N’activera que ce qui est demandé o Base de données o User  Simplicité d’utilisation Exemple: <f:widget.paginate> T3Uni 2015 Hautes performances & TYPO3 PAGE TYPE, EID & WIDGET
  • 14. 14 OPTIMISER TYPO3 TYPO3 propose un cache efficace Il est indispensable de l’exploiter et de comprendre son fonctionnement Différents types de cache  Cache de configuration  Cache de code (TSconfig: options.clearCache.system = 1 )  Cache de page Cache de page = page + blocs Exploiter correctement les USER/USER_INT et le cHash Tout est expliqué dans la doc TYPO3 ! Configurer les caches  Durée  Backend: fichiers, SQL, Redis, APC, Memcached T3Uni 2015 Hautes performances & TYPO3 LE CACHE - PRINCIPES
  • 15. 15 OPTIMISER TYPO3 Définir des politiques de cache différentes dans une même page T3Uni 2015 Hautes performances & TYPO3 LE CACHE – PAR BLOCS ?
  • 16. 16 OPTIMISER TYPO3 Différents content objects  USER/USER_INT & COA/COA_INT  A la base du cache par blocs stdWrap.cache Gestion des clés, des tags et de la durée HMENU.cachePeriod Menu = beaucoup de typolink = lent 24h par défaut, peut souvent être étendu ViewHelper render.cache (VHS) {v:render.cache(identity: [mixed], content: [mixed], onError: 'NULL', graceful: 1)} nc_static_filecache Créé une version HTML statique de la page. Mod Rewrite sert ces fichiers en priorité. Ne fonctionne que sur des pages entièrement en cache (pas de USER_INT !). T3Uni 2015 Hautes performances & TYPO3 LE CACHE – OUTILS
  • 17. 17 OPTIMISER TYPO3 Certaines versions sont plus performantes que d’autres Version 7.1 et supérieures  Suppression du « code mort » et des alias de classes  Autoloader PSR-4 de Composer (backporté en 6.2.10)  Frameworks javascript plus légers  ViewHelpers compilables  Compatibilité avec les versions de PHP 5.5 et supérieures  Compression et concaténation CSS/JS améliorées T3Uni 2015 Hautes performances & TYPO3 LE BON NOYAU
  • 18. 18 OPTIMISER TYPO3 Désactiver les sessions Frontend Désactiver les FeGroup et les FeUser  Pas d’authentification ? Pourquoi s’embêter ! Désactiver les extensions « lourdes »  Workspaces  Versionning  Dbal  Compatibility6 Désactiver les logs les plus détaillées en production  Deprecation Log T3Uni 2015 Hautes performances & TYPO3 RÉDUIRE L’EMPREINTE DU NOYAU
  • 19. 19 OPTIMISER TYPO3 Désactiver les caches  TSFE->set_no_cache()  ?no_cache=1  USER_INT à la place d’un USER avec un cHash Conditions Typoscripts  Chaque cas d’une condition = un hash différent = un cache différent   Remplacer le baseURL et ses conditions par un « config.absRefPrefix » Le mauvais code PHP  Développements spécifiques  Extensions communautaires non auditées  Erreurs, Warnings et Notices sont couteux en ressources T3Uni 2015 Hautes performances & TYPO3 CES CHOSES À ÉVITER
  • 20. 20 OPTIMISER T3Uni 2015 Hautes performances & TYPO3 L’INFRASTRUCTURE
  • 21. 21 OPTIMISER L’INFRASTRUCTURE Apache c’est lourd, remplaçons le par Nginx  Fausse bonne idée ! o Cela ne change rien sur les pages TYPO3 (et le PHP en général) o Apache 2.4 se permet même d’aller un peu plus vite à condition de désactiver le support des .htaccess  Oui mais les fichiers statiques ? Il y a mieux que Nginx pour ça… Configurer mod_expires et mod_deflate Pré-requis essentiels pour une bonne gestion des ressources Frontend. TYPO3 fournis quelques exemples dans sont fichiers .htaccess. Désactiver le support des .htaccess T3Uni 2015 Hautes performances & TYPO3 APACHE
  • 22. 22 OPTIMISER L’INFRASTRUCTURE Plus PHP est récent plus il va vite.  Moins de consommation mémoire, plus de vitesse  PHP 5.6 = ♥  PHP 7 = PHP NG = ♥ ♥ ♥ o Wordpress est 2 fois plus rapide, 75% de consommation CPU en moins o Plus rapide que HHVM ! 39% d’amélioration sur Laravel o Disponibilité annoncée pour octobre 2015 (sources: Zend.com) Cache d’opcode  APC / Opcache selon la version de PHP  De x2 à x10 en temps d’exécution PHP-FPM = fastCGI sans les défauts Surveiller les logs  Chaque log est couteux. Eviter les erreurs/warning/notice. T3Uni 2015 Hautes performances & TYPO3 PHP
  • 23. 23 OPTIMISER L’INFRASTRUCTURE T3Uni 2015 Hautes performances & TYPO3 PHP – CACHE D’OPCODE ?
  • 24. 24 OPTIMISER L’INFRASTRUCTURE MySQL 5.7 = gain de performance  Moteur InnoDB largement amélioré  IOPS: 2x plus que 5.6 // 3x plus que 5.5 (iops = input/output per second) (source: Sysbench)  Sharding facilité par « Fabric » et une réplication améliorée Configuration et hardware adaptés  Allouer la mémoire nécessaire aux buffers et index  SSD / FusionIO & RAM conséquente Développements spécifiques  Penser à ajouter des index pertinents !  Activer l’extension indexed_search_mysql Analyser les requêtes et surveiller les logs  En particulier le Slow Query Maria DB et Percona sont des alternatives à surveiller T3Uni 2015 Hautes performances & TYPO3 MYSQL
  • 25. 25 OPTIMISER L’INFRASTRUCTURE Varnish  Son but principal: décharger le serveur HTTP o Supporte plusieurs milliers de requêtes par seconde  Load balancing / Failover  WAF (un peu seulement) Conjuguer TYPO3 et ESI  ESI = Edge Side Include o <esi:include src="index$(GEO{'country_code'}|'US').html" alt="indexUS.html" ttl="2h" maxwait="5000"/> o Peut contenir des règles de calcul avancées  Le mécanisme colle au principe du cache par bloc de TYPO3 Plusieurs extensions TYPO3 facilitent la gestion du cache  moc_varnish, varnish, vcc, proxycachemanager T3Uni 2015 Hautes performances & TYPO3 PROXY CACHE HTTP
  • 26. 26 OPTIMISER L’INFRASTRUCTURE Où dans l’infrastructure ? T3Uni 2015 Hautes performances & TYPO3 PROXY CACHE HTTP
  • 27. 27 OPTIMISER L’INFRASTRUCTURE Quelle logique ? T3Uni 2015 Hautes performances & TYPO3 PROXY CACHE HTTP
  • 28. 28 OPTIMISER L’INFRASTRUCTURE Rapprocher le contenu du visiteur Répondre plus vite Répartir la charge Quelques solutions  Akamai FastDNS & AuraCDN  Amazon Route53 & CloudFront  CloudFlare  Extension TYPO3: smile_cdn Défaut principal: vidage du cache pas toujours facile  A réserver aux ressources statiques plutôt qu’aux pages Solutions gratuites  CDN publics pour les Javascripts  Utiliser un domaine différent pour servir les ressources statiques + varnish T3Uni 2015 Hautes performances & TYPO3 CDN & DNS
  • 29. 29 OPTIMISER L’INFRASTRUCTURE Scaling horizontal  Améliore aussi la disponibilité en cas de panne  Ajouter des serveurs web o Gestion des sessions PHP dans Redis o Synchronisation du système de fichiers (SAN)  Ajouter des serveurs MySQL o Répartition Master/Slave o Diriger les requêtes SELECT en priorité vers les Slaves  MySQL Proxy  Backend MySQL spécial pour TYPO3  Solutions Cloud type Amazon (EC2 + S3 + RBS) Scaling vertical  Ne pas rester sur des vieilles machines !  Peu complexe à mettre en place T3Uni 2015 Hautes performances & TYPO3 SCALING
  • 30. 30 T3Uni 2015 Hautes performances & TYPO3 ANALYSER & TESTER
  • 31. 31 TESTER & ANALYSER La première étape avant d’agir  Pour mieux cibler nos efforts  Pour quantifier les gains Se placer dans un environnement adapté  Stable  Permettant de faire varier un seul paramètre à la fois  Des outils suffisamment puissants pour simuler une charge importante  Le bon outil pour le bon test T3Uni 2015 Hautes performances & TYPO3 AVANT TOUTE CHOSE…
  • 32. 32 TESTER & ANALYSER Analyse  PageSpeed (Google)  Yslow (Yahoo)  GTMetrix  Webpagetest.org  PingDom  Profilers PHP: BlackFire / Xhprof / Xdebug  Et bien sur les logs des applications ! Monitoring  New Relic Montée en charge  jMeter /ApacheBench / Siege / Tsung T3Uni 2015 Hautes performances & TYPO3 LES BONS OUTILS
  • 33. 33 TESTER & ANALYSER T3Uni 2015 Hautes performances & TYPO3 LES BONS OUTILS – MESURES AVEC GTMETRIX
  • 34. 34 TESTER & ANALYSER T3Uni 2015 Hautes performances & TYPO3 LES BONS OUTILS – PROFILING PHP
  • 35. C’est bien tout ça mais par où commencer ?
  • 36. 36 HAUTES PERFORMANCES & TYPO3 Viser les macro-optimisations en premier  Donne les résultats les plus visibles, rapidement  Même s’il est tentant de ne creuser qu’une direction Identifier les pages critiques et leur point de blocage  La page d’accueil concentre la plupart des hits  Elle est souvent le point de départ Tester, analyser et surveiller en continu  Le site et les visiteurs évoluent: de nouveaux blocages peuvent apparaitre Chercher la simplicité: KISS Exploiter le cache TYPO3 et Varnish ! T3Uni 2015 Hautes performances & TYPO3 PAR OÙ COMMENCER ?
  • 37. 37 HAUTES PERFORMANCES & TYPO3 Wiki TYPO3  http://wiki.typo3.org/Performance_tuning Mailing List « TYPO3 Performance »  http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-performance Slack  https://forger.typo3.org/slack Et pout tout le reste Google, StackOverflow, SlideShare… T3Uni 2015 Hautes performances & TYPO3 OÙ TROUVER LES INFOS ?