SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
ANALYSER LE CODE SPAGHETTI D’UNE PAGE
avecYellow LabTools
QUI SUIS-JE ?
Gaël Métais
Freelance spécialisé dans la WebPerf
@gaelmetais
-Steve Souders
« 80-90% of the end-user response time is spent on
the frontend. Start there. »
OÙ SE SITUE LA LENTEUR ?
• Réseau
• Exécution des scripts
LORSQUE LE CACHE EST
CHAUD
• Réseau
• Exécution des scripts
« Ah oui, tout de même… »
-vous
Chargement d’une page - Chrome DevTools
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
223ms
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
634ms
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
1351ms
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
1554ms
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
2327ms
COMBIEN ?
ParisJS.org
Fnac.com
PriceMinister.com
LeMonde.fr
LeFigaro.fr
NYTimes.com
Temps d’exécution JS au chargement
3882ms
(sur un ordinateur puissant)
EXÉCUTION DES SCRIPTS
Code JS
EXÉCUTION DES SCRIPTS
Code JS DOM
EXÉCUTION DES SCRIPTS
Code JS DOM
Lecture
Modification
Binding
Recherche
EXÉCUTION DES SCRIPTS
Code JS DOM
Lecture
Modification
Binding
Repaint
Reflow
Recherche
EXÉCUTION DES SCRIPTS
Code JS DOM
Lecture
Binding
Buffer d’écriture
Repaint
Reflow
Recherche
PERFECT = zéro modification du DOM au chargement
Du code spaghetti
Du code mort ou inutilisé
Quand j’audit des sites je trouve plutôt ceci :
$(‘#xmas2004').snow()
Des plugins jQuery « magiques »
jquery.remue-ciel-et-terre.js
Les scripts du marketing
http://yellowlab.tools
• Complexité de la
page
• Respect des bonnes
pratiques
• Problèmes de
performance
SOUS LE CAPOT
Front
AngularJS
Serveur
NodeJS
PhantomJS + Phantomas
Présentation du profiler
• Sous-fonctions de jQuery
• Les warnings
• Résultats des requêtes
• Backtrace
Quel est le meilleur moment pour exécuter le JS ?
• Lot 1 : code ultra prioritaire
• Lot 2 : modifications du DOM au dessus de la ligne de
flottaison
• Lot 3 : bindings + dessous de la ligne de flottaison
• Lot 4 : scripts de tracking, publicité…
Quel est le meilleur moment pour exécuter le JS ?
1 2 3 4
Différence avec les profilers des navigateurs
- lisibilité
- détail des éléments
du DOM concernés
- profiling jQuery
- mesure précise du
temps
- fonctions lourdes
Devoirs à la maison
• Recherchez des patterns qui se répètent et optimisez-les
• Groupez les écritures du DOM ensemble
• Repérez les appels jQuery qui font beaucoup de sous-
requêtes
• En particulier show, hide, fadeIn, fadeOut (trop de magie)
• Surveillez ce que font vos plugins jQuery et les scripts tiers
OPEN SOURCE
Pour que l’outil vive et s’améliore…
• Contribuez !
• Signalez les bugs
• Parlez-en autour de vous
• Ajoutez une ★ sur GitHub
MERCI !
http://yellowlab.tools
twitter : @gaelmetais

Mais conteúdo relacionado

Mais procurados

2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 
A la queue leu leu
A la queue leu leuA la queue leu leu
A la queue leu leunautilebleu
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB13p
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoosejeromegn
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Anthony Faucogney
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement AndroidAnthony Faucogney
 
Introduction à WordPress sous Nginx
Introduction à WordPress sous NginxIntroduction à WordPress sous Nginx
Introduction à WordPress sous NginxMaxime Jobin
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?Rossi Oddet
 
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.wplyon
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Eric D.
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en devOlivier Doucet
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
Aurelien denis - 64 conneries que font les référenceurs avec WordPress
Aurelien denis - 64 conneries que font les référenceurs avec WordPressAurelien denis - 64 conneries que font les référenceurs avec WordPress
Aurelien denis - 64 conneries que font les référenceurs avec WordPressSEO CAMP
 

Mais procurados (20)

2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
A la queue leu leu
A la queue leu leuA la queue leu leu
A la queue leu leu
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
Utilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDBUtilisation de node.js avec mongoDB
Utilisation de node.js avec mongoDB
 
Node.js
Node.jsNode.js
Node.js
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android
 
Introduction à WordPress sous Nginx
Introduction à WordPress sous NginxIntroduction à WordPress sous Nginx
Introduction à WordPress sous Nginx
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
 
Messaging
MessagingMessaging
Messaging
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en dev
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Livre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JSLivre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JS
 
Aurelien denis - 64 conneries que font les référenceurs avec WordPress
Aurelien denis - 64 conneries que font les référenceurs avec WordPressAurelien denis - 64 conneries que font les référenceurs avec WordPress
Aurelien denis - 64 conneries que font les référenceurs avec WordPress
 

Destaque

CJD - Guide illustré - Objectif : Cohésion en Région
CJD - Guide illustré - Objectif : Cohésion en RégionCJD - Guide illustré - Objectif : Cohésion en Région
CJD - Guide illustré - Objectif : Cohésion en RégionCamille VALETTE
 
politiques et école - www.vos-pps.fr
politiques et école - www.vos-pps.frpolitiques et école - www.vos-pps.fr
politiques et école - www.vos-pps.frvospps
 
La nourriture
La nourritureLa nourriture
La nourritureArmelle
 
La bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogLa bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogcedemora
 
La bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogLa bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogcedemora
 
Quiz Frankenstein Junior
Quiz Frankenstein JuniorQuiz Frankenstein Junior
Quiz Frankenstein JuniorCharlotte Bap
 
Chroniques santé-protection-oreille BIORL
Chroniques santé-protection-oreille BIORLChroniques santé-protection-oreille BIORL
Chroniques santé-protection-oreille BIORLEthan Biorl
 
Seo campus Franck NLEMBA
Seo campus Franck NLEMBASeo campus Franck NLEMBA
Seo campus Franck NLEMBAFranck NLEMBA
 
3. gendreau, christian
3. gendreau, christian3. gendreau, christian
3. gendreau, christianTrudat
 
fiches projets situation au 31102016
fiches projets situation au 31102016fiches projets situation au 31102016
fiches projets situation au 31102016Sophie Decelle
 
Cloud Privé, Cloud Public, pourquoi choisir?
Cloud Privé, Cloud Public, pourquoi choisir?Cloud Privé, Cloud Public, pourquoi choisir?
Cloud Privé, Cloud Public, pourquoi choisir?Microsoft Ideas
 

Destaque (20)

Projet carrieres is
Projet carrieres isProjet carrieres is
Projet carrieres is
 
CJD - Guide illustré - Objectif : Cohésion en Région
CJD - Guide illustré - Objectif : Cohésion en RégionCJD - Guide illustré - Objectif : Cohésion en Région
CJD - Guide illustré - Objectif : Cohésion en Région
 
responsive design
responsive designresponsive design
responsive design
 
politiques et école - www.vos-pps.fr
politiques et école - www.vos-pps.frpolitiques et école - www.vos-pps.fr
politiques et école - www.vos-pps.fr
 
La nourriture
La nourritureLa nourriture
La nourriture
 
Etude internet 2030-web
Etude internet 2030-webEtude internet 2030-web
Etude internet 2030-web
 
La bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogLa bitácora del siglo xxi el blog
La bitácora del siglo xxi el blog
 
La bitácora del siglo xxi el blog
La bitácora del siglo xxi el blogLa bitácora del siglo xxi el blog
La bitácora del siglo xxi el blog
 
Quiz Frankenstein Junior
Quiz Frankenstein JuniorQuiz Frankenstein Junior
Quiz Frankenstein Junior
 
Course Content
Course ContentCourse Content
Course Content
 
Chroniques santé-protection-oreille BIORL
Chroniques santé-protection-oreille BIORLChroniques santé-protection-oreille BIORL
Chroniques santé-protection-oreille BIORL
 
Barbie Gardening
Barbie GardeningBarbie Gardening
Barbie Gardening
 
Echos de Samilia 2014
Echos de Samilia 2014 Echos de Samilia 2014
Echos de Samilia 2014
 
Seo campus Franck NLEMBA
Seo campus Franck NLEMBASeo campus Franck NLEMBA
Seo campus Franck NLEMBA
 
Saraswati Chandra
Saraswati ChandraSaraswati Chandra
Saraswati Chandra
 
3. gendreau, christian
3. gendreau, christian3. gendreau, christian
3. gendreau, christian
 
Tema miriam.
Tema miriam.Tema miriam.
Tema miriam.
 
fiches projets situation au 31102016
fiches projets situation au 31102016fiches projets situation au 31102016
fiches projets situation au 31102016
 
Cloud Privé, Cloud Public, pourquoi choisir?
Cloud Privé, Cloud Public, pourquoi choisir?Cloud Privé, Cloud Public, pourquoi choisir?
Cloud Privé, Cloud Public, pourquoi choisir?
 
Gestion du cycle de projet
Gestion du cycle de projetGestion du cycle de projet
Gestion du cycle de projet
 

Semelhante a YLT paris js - mars 2015

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Techniques d’accélération des pages Web
Techniques d’accélération des pages WebTechniques d’accélération des pages Web
Techniques d’accélération des pages WebMicrosoft
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013Romain Linsolas
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720Romain Linsolas
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Camille Roux
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPhalleck45
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performanteJean-Pierre Vincent
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages webJean-Pierre Vincent
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Camille Roux
 
Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Microsoft
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Julien Deneuville
 

Semelhante a YLT paris js - mars 2015 (20)

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Techniques d’accélération des pages Web
Techniques d’accélération des pages WebTechniques d’accélération des pages Web
Techniques d’accélération des pages Web
 
JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Php 100k
Php 100kPhp 100k
Php 100k
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages web
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?
 

YLT paris js - mars 2015