Top Banner
Performances Web Concours #webperf 2010 Jean-pierre VINCENT
58

Retours sur le concours Webperf 2010

Jul 02, 2015

Download

Technology

Les retours sur le concours
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Retours sur le concours Webperf 2010

Performances Web

Concours #webperf 2010

Jean-pierre VINCENT

Page 2: Retours sur le concours Webperf 2010

Qui ça ?Jean-pierre VINCENT

braincracking.org (veille techno)@theystolemynick

10 ans de WebConsultant, formateur, expertise

Page 3: Retours sur le concours Webperf 2010
Page 4: Retours sur le concours Webperf 2010

Le retour des soirées

Page 5: Retours sur le concours Webperf 2010

Des chiffres● 30 jours (nov. 2010)● 250 inscriptions● 55 participants● 2 tiers de français● 3 gagnants

Page 6: Retours sur le concours Webperf 2010

La cible● 1 site : www.fnac.com/enfants.asp ●

Page 7: Retours sur le concours Webperf 2010

La cible● www.fnac.com/enfants.asp ● En version statique :• Onload 17s• Start render 4s

Page 8: Retours sur le concours Webperf 2010

La cible● www.fnac.com/enfants.asp ● En version statique :• Start render 4s• Freeze au démarrage

Page 9: Retours sur le concours Webperf 2010

Le résultat

Page 10: Retours sur le concours Webperf 2010

Les basesCache navigateur

<IfModule mod_expires.c>ExpiresActive OnExpiresByType image/jpeg "access plus 10 years"# ../..</IfModule>

Page 11: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip<IfModule mod_gzip.c>mod_gzip_on yesmod_gzip_dechunk yesmod_gzip_item_include file \.(html|txt|css|js|json)$mod_gzip_item_exclude file \.(jpg|png|gif|ico)$</IfModule>

Page 12: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie•

Page 13: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie• 0.5KoTEST=ok; OrderInSession=0; accept=ok; UID=0E3649C79-3AFD-18B8-7817-FA868BC99668; SID=e85f0b48-ae1d-a5f5-aa15-fbffdc4e1c1a; TTL=241020101353; s_cc=true; campaign=FnacAff; s_ev14=%5B%5B%27FnacAff%27%2C%271291388510515%27%5D%5D; s_cpc=1; s_sq=%5B%5BB%5D%5D

Page 14: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie• 0.5KoTEST=ok; OrderInSession=0; accept=ok; UID=0E3649C79-3AFD-18B8-7817-FA868BC99668; SID=e85f0b48-ae1d-a5f5-aa15-fbffdc4e1c1a; TTL=241020101353; s_cc=true; campaign=FnacAff; s_ev14=%5B%5B%27FnacAff%27%2C%271291388510515%27%5D%5D; s_cpc=1; s_sq=%5B%5BB%5D%5D

115 fois

Page 15: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie• Sous-domaines pour statiques•

Page 16: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie• Sous-domaines pour statiques• Redéfinir le cookie sur www.*

Page 17: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie● Les images• Origine : 80 images pour 500Ko•

Page 18: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie● Les images• Origine : 80 images pour 500Ko• Jouable : 250Ko

Page 19: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie● Les images• Passage en PNG 8bit• Réduction du nombre de couleurs• Outils (jpgtran, pngcrush ...)

Page 20: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie● Les images● Concaténer, minifier JS et CSS• Outils !

Page 21: Retours sur le concours Webperf 2010

Les bases● Cache navigateur● Compression gzip● Le cookie● Les images● Concaténer, minifier JS et CSS• Outils !

Page 22: Retours sur le concours Webperf 2010

Techniques de la mort

Die HTTP, Die

Page 23: Retours sur le concours Webperf 2010

Die CSS !Le CSS ?

● Requête bloquante

● Mais indispensable

Page 24: Retours sur le concours Webperf 2010

Die CSS !Techniques de base :

✓ Minifié / concaténé / gzipé

Page 25: Retours sur le concours Webperf 2010

Die CSS !Techniques de base :

✓ Minifié / concaténé / gzipé

⚠ Nettoyage (28Ko => 12 Ko)

Page 26: Retours sur le concours Webperf 2010

Die CSS !Chargement non bloquant du CSS :

● Start render : 200ms !

Page 27: Retours sur le concours Webperf 2010

Die CSS !FOUC (1s)

Page 28: Retours sur le concours Webperf 2010

Die CSS !Chargement non bloquant du CSS :

● Start render : 200ms !

⚠ FOUC

Page 29: Retours sur le concours Webperf 2010

Die CSS !Chargement non bloquant du CSS :

● Start render : 200ms !

⚠ FOUC

✗ Dépendance JS

Page 30: Retours sur le concours Webperf 2010

Die CSS !

CSS inline ?

Page 31: Retours sur le concours Webperf 2010

Die CSS !CSS inline :

✓ Bon premier rendu

✓ Pas de dépendance JS

✗ Pas de cache

Page 32: Retours sur le concours Webperf 2010

Die CSS !CSS inline + chargement non

bloquant:

Page 33: Retours sur le concours Webperf 2010

Die CSS !En inline : layout

Page 34: Retours sur le concours Webperf 2010

Die CSS !Externe, non bloquant : le reste

Page 35: Retours sur le concours Webperf 2010

Die CSS !CSS inline + chargement non

bloquant :

✓ Bon premier rendu

✓ Cache

Page 36: Retours sur le concours Webperf 2010

Die CSS !CSS inline + chargement non

bloquant :

✓ Bon premier rendu

✓ Cache

✓ Pas de dépendance JS (noscript)

Page 37: Retours sur le concours Webperf 2010

Die CSS !CSS inline + chargement non

bloquant :

Layout inline,

● Externe : le reste

● Utilisation de <noscript>

Page 38: Retours sur le concours Webperf 2010

Die JS !Le JS ?

● Requête bloquante

● Mais indispensable

● 60Ko (gzipé)

Page 39: Retours sur le concours Webperf 2010

Die JS !JS concaténé, minifié, gzipé ...

Page 40: Retours sur le concours Webperf 2010

Die JS !JavaScript defer, chargement asynchrone

Page 41: Retours sur le concours Webperf 2010

Die JS !JavaScript defer, chargement asynchrone

⚠ Correction des dépendances inlines

Page 42: Retours sur le concours Webperf 2010

Die JS !JS : paralléliser

✓ Gain : 70ms :)⚠ Dépendances

Page 43: Retours sur le concours Webperf 2010

Die HTTP !

La foire au lazy-loading

Page 44: Retours sur le concours Webperf 2010

Die HTTP !

Lazy-load des images produits :

Moins de poids + Moins de requêtes + Super scores = Meilleur classement

Page 45: Retours sur le concours Webperf 2010

Die HTTP !

Lazy-load des images produits :

Moins de poids + Moins de requêtes + Super scores ≠ Expérience utilisateur !

Page 46: Retours sur le concours Webperf 2010

Die HTTP !

Lazy-load des images produits :

✗ onmousemove

Page 47: Retours sur le concours Webperf 2010

Die HTTP !

Lazy-load des images produits :

✗ onmousemove ✗ Dépendance à JS

Page 48: Retours sur le concours Webperf 2010

Die HTTP !

Lazy-load des images produits :

✗ onmousemove ✗ Dépendance à JS

✓ La solution : JS + noscript

Page 49: Retours sur le concours Webperf 2010

Die HTTP !

● Lazy-load de l'iframe du footer

● Lazy-load du JS de l'autocomplete

Page 50: Retours sur le concours Webperf 2010

Die HTTP ! Encodage des images

● Encodage en base64● data:uri / MHTML● Dans CSS ou dans le HTML

Page 51: Retours sur le concours Webperf 2010

Die HTTP ! Encodage des images✓ 0 requêtes

⚠ +30% de poids⚠ Dans le HTML : pas de cache⚠ CSS spécifiques IE

Page 52: Retours sur le concours Webperf 2010

Die HTTP ! Encodage des images

⚠ La surprise : le coût CPU

Page 53: Retours sur le concours Webperf 2010

Die HTTP !1 query to rule them all

Bien tenté ;)

Page 54: Retours sur le concours Webperf 2010

Dernière technique ultime

Savoir coder

Page 55: Retours sur le concours Webperf 2010

Savoir coderPage de départ :

● 213Ko● 2000 noeuds DOM● Validateur : 2300 parse error

« Sensation » de lenteur

Page 56: Retours sur le concours Webperf 2010

Savoir coderRefactoring complet du HTML :

● Poids -50%● nœuds DOM -50%● Correction des erreurs● Plus d'imbrication de tableaux

= « Sensation » de fluidité

Page 57: Retours sur le concours Webperf 2010

Savoir coderRefactoring complet du CSS :● Reset pour supprimer des règles● Suppression des filter()● Dégradation gracieuse acceptée● Utilisation de :before● Dégradé avec un png transparent

Page 58: Retours sur le concours Webperf 2010

Conclusions

● Temps d'affichage divisé par 10● Techniques universelles : 70% du gain

● Temps > connaissances● Bonnes pratiques : #win● L'ère des grandes découvertes est finie ?● À quand le prochain concours ?