Slide 1

Slide 1 text

PERFORMANCE WEB Par quoi commencer ? Photo : © Raphaël Goetter

Slide 2

Slide 2 text

RAPHAËL GOETTER Alsacréations #CSS #Standards #Webdesign #Responsive #HTML #Accessibilité #WebPerf

Slide 3

Slide 3 text

L'INTERNAUTE N'AIME PAS ATTENDRE ❶ !

Slide 4

Slide 4 text

ON VEUT DES CHIFFRES ! Vous aimez les stats ?

Slide 5

Slide 5 text

ON VEUT DES CHIFFRES ! Sites e-commerce et attente client 57 % des visiteurs quittent un site e-commerce s'il met plus de 4 secondes à s'afficher – PhoCusWright / Akamai (2010) “

Slide 6

Slide 6 text

26 % des visiteurs quittent un site e-commerce s'il met plus de 2 secondes à s'afficher – PhoCusWright / Akamai (2010) “ ON VEUT DES CHIFFRES ! Sites e-commerce et attente client

Slide 7

Slide 7 text

ON VEUT DES CHIFFRES ! C'est pire sur mobile ! 60% des mobinautes s'attendent à un chargement de 3s maximum pour un site mobile – Compuware (2011) “

Slide 8

Slide 8 text

ON VEUT DES CHIFFRES ! C'est pire sur mobile ! 60% des mobinautes s'attendent à un chargement de 3s maximum pour un site mobile – Compuware (2011) “ … Et 74% quittent une page après 5 secondes d'attente – Compuware (2011) “

Slide 9

Slide 9 text

POURQUOI LA PERFORMANCE WEB ? ❷ Photo : CC Flickr - jdwheaton

Slide 10

Slide 10 text

PARCE QUE ÇA RAPPORTE ! Photo : CC Flickr - jdwheaton

Slide 11

Slide 11 text

+100ms 1% perte de revenus ⬇

Slide 12

Slide 12 text

+100ms 1% perte de revenus ⬇ +500ms -20% de recherches ⬇

Slide 13

Slide 13 text

+100ms 1% perte de revenus ⬇ +500ms -20% de recherches ⬇ -2s +15% de chargements ⬇

Slide 14

Slide 14 text

+100ms 1% perte de revenus ⬇ +500ms -20% de recherches ⬇ -2s +15% de chargements ⬇ -5s +12% de revenus +25% pageviews ⬇

Slide 15

Slide 15 text

MAIS AUSSI (SURTOUT ?) ... Sources : WebRankInfo / 1ere-position.fr / silicon.fr En 2010, Google a annoncé officiellement qu'il tenait compte de la rapidité des sites dans son algorithme de positionnement. Google recommande un délai moyen de 1,5 seconde pour l’affichage d’une page web. ❶ ❷

Slide 16

Slide 16 text

QU'EST-CE QUI RALENTIT LE WEB ❸ ?

Slide 17

Slide 17 text

LE TYPE DE CONNEXION EDGE (0,38 Mbit/s) 3G (1,9 Mbit/s) 3G+ (3,6 Mbit/s) H+ (10 Mbit/s) Wi-Fi (25 Mbit/s) ADSL (30 Mbit/s) 4G (40 Mbit/s) Fibre (100 Mbit/s) Source : Wikipedia

Slide 18

Slide 18 text

LE TYPE DE CONNEXION 3G 20 minutes ➞ 3G+ 1min 15s ➞ 4G 10 secondes ➞ Concrètement... Source : Orange (bon OK c'est un peu bullshit marketing) Téléchargement d'un album de musique :

Slide 19

Slide 19 text

LE POIDS DES RESSOURCES Images 700 Ko ➞ JavaScript 230 Ko ➞ CSS 37 Ko ➞ HTML 45 Ko ➞ Autres 188 Ko ➞ 1,2Mo au total en moyenne : Source : AlexaRank Top 1000 (janvier - août 2013)

Slide 20

Slide 20 text

LE POIDS DES RESSOURCES Source : http://mobitest.akamai.com

Slide 21

Slide 21 text

LE NOMBRE DE REQUÊTES Images 60 requêtes ➞ JavaScript 17 requêtes ➞ CSS 3,5 requêtes ➞ HTML 10 requêtes ➞ Autres 7 requêtes ➞ 98 requêtes en moyenne : Source : AlexaRank Top 1000 (janvier - août 2013)

Slide 22

Slide 22 text

LE NOMBRE DE REQUÊTES … à cause de la latence Latence ● dépend du serveur, du DNS ● dépend de la connexion : ● 20-60ms via ADSL ● 200-600ms en 3G Chargement ● dépend du poids

Slide 23

Slide 23 text

LES RALENTISSEMENTS DIVERS Scripts bloquants CSS bloquants Redirections HTTP/JavaScript Mauvaises requêtes (404) Reflow, repaint navigateur Etc.

Slide 24

Slide 24 text

LES OUTILS POUR TESTER ❹ Photo : © Raphaël Goetter

Slide 25

Slide 25 text

MANUELLEMENT Outil d'audit de Chrome Module d'audit divers (accessibilité, réseau, performances,...) directement intégré au navigateur Chrome : Touche F12 Onglet « Audit » Option « Webpage performance » ➞ ➞

Slide 26

Slide 26 text

MANUELLEMENT Extensions : YSlow et PageSpeed YSlow (Yahoo!) : plugin disponible sur Firefox, Chrome, Safari, Opera PageSpeed (Google) : plugin Chrome, Firefox et en ligne

Slide 27

Slide 27 text

EN LIGNE La référence : WebPageTest.org Au choix : lieu du serveur, type de connexion, navigateur, etc.

Slide 28

Slide 28 text

EN LIGNE Httparchive.org FilmStrip !

Slide 29

Slide 29 text

EN LIGNE Google PageSpeed Insights

Slide 30

Slide 30 text

EN LIGNE Akamai Mobitest Pour les temps d'affichage sur mobiles

Slide 31

Slide 31 text

QUELQUES EXEMPLES ❺

Slide 32

Slide 32 text

QUELQUES SITES PASSÉS AU CRIBLE 7s chargement 78 requêtes 1095ko poids 7.1s chargement 163 requêtes 2203ko poids 7.2s chargement 133 requêtes 808ko poids 7.7s chargement 57 requêtes 1010ko poids

Slide 33

Slide 33 text

QUELQUES SITES PASSÉS AU CRIBLE 2.3s chargement 171 requêtes 2058ko poids Suite... 6.6s chargement 66 requêtes 671ko poids

Slide 34

Slide 34 text

ACCÉLÉREZ VOS PAGES WEB ❻ Photo : © Raphaël Goetter

Slide 35

Slide 35 text

BONNES PRATIQUES GÉNÉRALES Pas de redirections de pages Scripts placés avant

Slide 36

Slide 36 text

EN DÉTAIL Hébergez les ressources sur plusieurs domaines « » Hébergez les ressources (images, médias) sur plusieurs domaines différents. Cette technique favorise leur téléchargement en parallèle. Un sous-domaine fonctionne aussi (ex. media.alsacreations.com), et un domaine sans cookies est encore plus performant. Source : Yahoo!UI blog Opera : 8 / IE10 : 8 / Chrome : 6 / Firefox : 6 / IE8/IE9 : 6 / Safari : 4 / IE6/IE7 : 2 ❶

Slide 37

Slide 37 text

RÉDUIRE LE POIDS DES RESSOURCES Minifiez les fichiers CSS Minifiez les fichiers JS Compressez les images Choississez le bon format d'image (.png, .gif, .jpg) Optez pour des fontes légères (.woff est généralement plus léger) ❷

Slide 38

Slide 38 text

EN DÉTAIL Compressez les images « » ❷ www.kraken.io

Slide 39

Slide 39 text

RÉDUIRE LES REQUÊTES Réunissez les feuilles de styles CSS en une seule si possible Réduisez / réunifiez le nombre de fichiers JavaScript externes si possible N'utilisez pas (ou presque pas) d'images ! → Sprites CSS, → Data-URI, → Caractères unicodes, → Font Icons, ... ❸

Slide 40

Slide 40 text

EN DÉTAIL Font Icons « » ❸ icomoon.io .icon {font-family: "MyFontIcon", sans-serif;} .icon-twitter:before {content: "t";}

Slide 41

Slide 41 text

NE CHARGER QUE LE NÉCESSAIRE Chargez les scripts externes en Asynchrone et/ou Différé N'utilisez pas display : none pour masquer un élément jQuery est parfois inutile et remplaçable par jQuip ou Zepto.js, plus légers Triez les scripts nécessaires et les scripts de confort JavaScript est parfois avantageusement remplaçable par CSS3 : bordures, arrondis, ombrages, animations, formes simples (triangles, ronds, carrés) Pensez à faire du chargement conditionnel de ressources (selon taille d'écran, pixel-ratio, ...) ❹

Slide 42

Slide 42 text

EN DÉTAIL Charger conditionnellement les éléments « » ❹ @media (min-width : 768px) { .deco {background: url(concombre-big.jpg);} } @media (max-width : 767px) { .deco {background: url(concombre-small.jpg);} } concombre-big.jpg concombre-small.jpg

Slide 43

Slide 43 text

CÔTÉ SERVEUR Compressez les fichiers texte côté serveur (HTML, CSS, JS) Générez certaines pages « à l'avance » (ex. flux RSS) Gérez les durées de cache des éléments ❺

Slide 44

Slide 44 text

EN DÉTAIL Durée d'expiration du cache « » ❺ ExpiresActive On ExpiresByType text/plain "access plus 1 day" ExpiresByType text/html "access plus 1 hour" ExpiresByType application/x-javascript "access plus 3 months" ExpiresByType application/javascript "access plus 3 months" ExpiresByType text/css "access plus 3 months" ExpiresByType image/gif "access plus 3 months" ExpiresByType image/x-icon "access plus 3 months" ExpiresByType image/png "access plus 3 months" ExpiresByType image/jpeg "access plus 3 months" ExpiresByType application/xml "access plus 1 hour" # ExpiresDefault "access plus 1 day" Outil Google : Google ModPagespeed

Slide 45

Slide 45 text

Polices : League Gothic + Segoe UI Light Photos : Fotolia + mon super APN Pictos : IconFinder (Visual Pharm, Designmodo) MERCI, BISOUS Raphaël Goetter www.alsacreations.fr @goetter Crédits