34
ANALYSER LE CODE SPAGHETTI D’UNE PAGE avec Yellow Lab Tools

YLT paris js - mars 2015

Embed Size (px)

Citation preview

Page 1: YLT paris js - mars 2015

ANALYSER LE CODE SPAGHETTI D’UNE PAGE

avec Yellow Lab Tools

Page 2: YLT paris js - mars 2015

QUI SUIS-JE ?

Gaël Métais

Freelance spécialisé dans la WebPerf

@gaelmetais

Page 3: YLT paris js - mars 2015

-Steve Souders

« 80-90% of the end-user response time is spent on the frontend. Start there. »

Page 4: YLT paris js - mars 2015

OÙ SE SITUE LA LENTEUR ?

• Réseau

• Exécution des scripts

Page 5: YLT paris js - mars 2015

LORSQUE LE CACHE EST CHAUD

• Réseau

• Exécution des scripts

Page 6: YLT paris js - mars 2015

« Ah oui, tout de même… »-vous

Chargement d’une page - Chrome Dev Tools

Page 7: YLT paris js - mars 2015

COMBIEN ?

ParisJS.org

Fnac.com

PriceMinister.com

LeMonde.fr

LeFigaro.fr

NYTimes.com

Temps d’exécution JS au chargement

223ms

Page 8: YLT paris js - mars 2015

COMBIEN ?

ParisJS.org

Fnac.com

PriceMinister.com

LeMonde.fr

LeFigaro.fr

NYTimes.com

Temps d’exécution JS au chargement

634ms

Page 9: YLT paris js - mars 2015

COMBIEN ?

ParisJS.org

Fnac.com

PriceMinister.com

LeMonde.fr

LeFigaro.fr

NYTimes.com

Temps d’exécution JS au chargement

1351ms

Page 10: YLT paris js - mars 2015

COMBIEN ?

ParisJS.org

Fnac.com

PriceMinister.com

LeMonde.fr

LeFigaro.fr

NYTimes.com

Temps d’exécution JS au chargement

1554ms

Page 11: YLT paris js - mars 2015

COMBIEN ?

ParisJS.org

Fnac.com

PriceMinister.com

LeMonde.fr

LeFigaro.fr

NYTimes.com

Temps d’exécution JS au chargement

2327ms

Page 12: YLT paris js - mars 2015

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)

Page 13: YLT paris js - mars 2015

EXÉCUTION DES SCRIPTS

Code JS

Page 14: YLT paris js - mars 2015

EXÉCUTION DES SCRIPTS

Code JS DOM

Page 15: YLT paris js - mars 2015

EXÉCUTION DES SCRIPTS

Code JS DOMLecture

Modification

Binding

Recherche

Page 16: YLT paris js - mars 2015

EXÉCUTION DES SCRIPTS

Code JS DOMLecture

Modification

Binding

Repaint Reflow

Recherche

Page 17: YLT paris js - mars 2015

EXÉCUTION DES SCRIPTS

Code JS DOMLecture

Binding

Buffer d’écriture

Repaint Reflow

Recherche

Page 18: YLT paris js - mars 2015

PERFECT = zéro modification du DOM au chargement

Page 19: YLT paris js - mars 2015

Du code spaghettiDu 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

Page 20: YLT paris js - mars 2015

http://yellowlab.tools

Page 21: YLT paris js - mars 2015
Page 22: YLT paris js - mars 2015

• Complexité de la page

• Respect des bonnes pratiques

• Problèmes de performance

Page 23: YLT paris js - mars 2015

SOUS LE CAPOT

FrontAngularJS

ServeurNodeJS

PhantomJS + Phantomas

Page 24: YLT paris js - mars 2015
Page 25: YLT paris js - mars 2015
Page 26: YLT paris js - mars 2015
Page 27: YLT paris js - mars 2015

Présentation du profiler

• Sous-fonctions de jQuery

• Les warnings

• Résultats des requêtes

• Backtrace

Page 28: YLT paris js - mars 2015

Quel est le meilleur moment pour exécuter le JS ?

Page 29: YLT paris js - mars 2015

• 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

Page 30: YLT paris js - mars 2015

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

Page 31: YLT paris js - mars 2015

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

Page 32: YLT paris js - mars 2015

OPEN SOURCE

Page 33: YLT paris js - mars 2015

Pour que l’outil vive et s’améliore…

• Contribuez !

• Signalez les bugs

• Parlez-en autour de vous

• Ajoutez une ★ sur GitHub

Page 34: YLT paris js - mars 2015

MERCI !

http://yellowlab.tools

twitter : @gaelmetais