TYPO3 et hautes performances - T3UNI 2015

3 109 vues

Publié le

Découvrez les défis et les possibilités d'intégration du CMS TYPO3 dans une architecture hautes performances.

Au delà des principes et concepts généraux liés aux performances, nous y abordons les optimisations frontend, d'architecture, d'hébergement et bien évidemment l'optimisation de TYPO3.

Nous y évoquons enfin les bonnes pratiques et nos préconisations dans la mise en place de ces solutions.

Ce document a été présenté lors de la T3UNI 15 à Annecy.

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
3 109
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 123
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

TYPO3 et hautes performances - T3UNI 2015

  1. 1. Hautes performances & TYPO3
  2. 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. 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. 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. 5 PERFORMANCES Votre « site » ? Mais encore… T3Uni 2015 Hautes performances & TYPO3 MON SITE EST LENT…
  6. 6. Pour obtenir de bonnes performances il faut s’intéresser à tous les maillons de la chaine
  7. 7. 7 OPTIMISER LE T3Uni 2015 Hautes performances & TYPO3 FRONTEND
  8. 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. 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. 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. 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. 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. 13. 13 OPTIMISER T3Uni 2015 Hautes performances & TYPO3 TYPO3
  14. 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. 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. 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. 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. 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. 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. 20 OPTIMISER T3Uni 2015 Hautes performances & TYPO3 L’INFRASTRUCTURE
  21. 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. 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. 23 OPTIMISER L’INFRASTRUCTURE T3Uni 2015 Hautes performances & TYPO3 PHP – CACHE D’OPCODE ?
  24. 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. 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. 26 OPTIMISER L’INFRASTRUCTURE Où dans l’infrastructure ? T3Uni 2015 Hautes performances & TYPO3 PROXY CACHE HTTP
  27. 27. 27 OPTIMISER L’INFRASTRUCTURE Quelle logique ? T3Uni 2015 Hautes performances & TYPO3 PROXY CACHE HTTP
  28. 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. 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. 30 T3Uni 2015 Hautes performances & TYPO3 ANALYSER & TESTER
  31. 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. 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. 33 TESTER & ANALYSER T3Uni 2015 Hautes performances & TYPO3 LES BONS OUTILS – MESURES AVEC GTMETRIX
  34. 34. 34 TESTER & ANALYSER T3Uni 2015 Hautes performances & TYPO3 LES BONS OUTILS – PROFILING PHP
  35. 35. C’est bien tout ça mais par où commencer ?
  36. 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. 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 ?
  38. 38. QUESTIONS ?

×