techniques d’accélération des pages web

49
Techniques d’accélération des pages Web Jean-Pierre VINCENT Consultant indépendant Code / Développement #WebPerf - @theystolemynick Braincracking.org

Upload: microsoft

Post on 12-Jul-2015

271 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Techniques d’accélération des pages Web

Techniques d’accélération des

pages WebJean-Pierre VINCENT

Consultant indépendant

Code / Développement

#WebPerf - @theystolemynick

Braincracking.org

Page 2: Techniques d’accélération des pages Web

• 5 10 13 ans de Web

• PHP, JavaScript, HTML5, CSS

• Ex : – startups, Yahoo!, houra.fr

• Expert frontend indépendant

• Veilleur :– braincracking.org

– @theystolemynick

Bonjour, je m’appelle Jean-Pierre

Page 3: Techniques d’accélération des pages Web

Les 10 14 35 commandements

http://developer.yahoo.com/performance/rules.html

Steve Souders, like a Boss

Performance Web ?

Page 6: Techniques d’accélération des pages Web

• Un administrateur système

heureux

Pourquoi la performance ?

Page 7: Techniques d’accélération des pages Web

• Qualité perçue

• Ergonomie

• Réponse à un besoin

• Métrique : premier rendu

$$

Pourquoi la performance ?

Page 8: Techniques d’accélération des pages Web

Tunnel d’achat :

1s = -7% de

conversion

Combien coûte une seconde ?

Page 9: Techniques d’accélération des pages Web

Vidéo :

1s =-6% de vue

Akamai 2012

Combien coûte une seconde ?

Page 10: Techniques d’accélération des pages Web

Voyage

4s = -60% de vue

Combien coûte une seconde ?

Page 11: Techniques d’accélération des pages Web

Search

• Bing : 1 s = - 3 % de CA

• Yahoo! : 1 s = + 10 % de

rebond

Combien coûte une seconde ?

Page 12: Techniques d’accélération des pages Web

Combien coûte une seconde ?

Mobile

• 1 s = -10% de pages vues

• Après 4 s : 60% d'abandon

http://www.themediabriefing.com/article/2012-10-02/speed-is-a-feature-why-a-slow-mobile-web-experience-means-lost-revenue

http://www.strangeloopnetworks.com/resources/infographics/2012-state-of-mobile-ecommerce-performance/poster/

Page 13: Techniques d’accélération des pages Web
Page 14: Techniques d’accélération des pages Web

Comment ne pas rater un chantier Webperf ?

Page 15: Techniques d’accélération des pages Web

1. Objectifs

2. Que voient les utilisateurs ?

3. Quelles techniques ?

4. Quel suivi ?

Chantier Webperf

Page 16: Techniques d’accélération des pages Web

Interactivité < 5 s

1. Objectifs

Page 17: Techniques d’accélération des pages Web

Interactivité avec la fonctionnalité < 5 s

Premier rendu < 2 s

1. Objectifs

Page 18: Techniques d’accélération des pages Web

Interactivité avec la fonctionnalité < 5 s

Premier rendu < 2 s

Réponse HTML < 1 s

1. Objectifs

Page 19: Techniques d’accélération des pages Web

Interactivité avec la fonctionnalité < 5 s

Premier rendu < 2 s

Réponse HTML < 1 s

Chargement de la page < 20 s ?

1. Objectifs

Page 20: Techniques d’accélération des pages Web

2. Utilisateurs

Page 21: Techniques d’accélération des pages Web

Sources : Akamai 2011 et 2012, Degrouptest, 60 millions de consommateurs, ARCEP

• Grand public français :– IE 7 is dead !

– Arrivée via réseaux mobiles

– Connexions moyennes :

2. Utilisateurs

ADSL Mobiles

Débit 4, 8 Mb/s 2,5 Mb/s

Latence 95 ms 200 ms

Page 22: Techniques d’accélération des pages Web

• La moyenne n’est pas

représentative

• 25% des utilisateurs ont moins

de 2,5 Mb/s

< 1

Mb/s 1 - 2

Mb/s

2 - 3

Mb/s3 - 4

Mb/s

4 - 5

Mb/s

5-10

Mb/s

> 10

Mb/s

Répartition des débits

(ligne fixe)

2. Utilisateurs

Page 23: Techniques d’accélération des pages Web

• Connexion réseau à cibler :

• Navigateurs à cibler :

– IE 8

– Safari iOS

– Android 2.3.x et 4.x

2. Utilisateurs

ADSL Mobiles

Débit 2,5 Mb/s 2,5 Mb/s

Latence 110 ms 200 ms

+25% de perte

Page 24: Techniques d’accélération des pages Web

3. LES TECHNIQUES

Page 26: Techniques d’accélération des pages Web

Sans débat : configuration serveur

• Configuration du keep-alive

• Activer la compression

• Ressources texte : 80%

KeepAlive On

KeepAliveTimeout 5

Timeout 10

Page 27: Techniques d’accélération des pages Web

Sans débat : gérer son cache

Page 28: Techniques d’accélération des pages Web

• Et pourtant :

– 50% des sites oublient

– 30% ont un TTL < 30 jours

Cache

Page 29: Techniques d’accélération des pages Web

• Sans cache :

– Phases de recette interne

– Environnements de

développement

• Cache agressif :

– Cache utilisateur

– Chaîne de cache réseau

« Vide ton cache »

Page 30: Techniques d’accélération des pages Web

• Serveur

– eTag: "xxxxxx"

Ou

– Last-Modified: DATE_W3C

• Serveur

– 200 OK

Ou

– 304 Not Modified

• Client

– If-None-Match: "xxxxxx"

Ou

– If-Modified-Since: DATE_W3C

Cache : invalidation standard

Page 31: Techniques d’accélération des pages Web

• Sert à des cas spéciaux

– Polling

– Revalidation de session

– Environnement de dév.

Cache : invalidation standard

• Génère autant de requêtes

Page 32: Techniques d’accélération des pages Web

• Maîtrise totale des URL

– HTML

– CSS

– JS

• Processus de compilation

• URL rendues uniques par :

– Numéro de release

– Md5 du fichier

Invalidation des caches longs

• Mise en cache long :

Expires : +1 anCache-control : publicVary : xxx

Page 33: Techniques d’accélération des pages Web

API Application Cache

• 1 application = 1 pack de

fichiers

• 1 fichier de règles

• 1 API de gestion du cache

• Surtout sur mobiles

Le super cache

Page 34: Techniques d’accélération des pages Web

Sans débat : moins de requêtes

• La limite de HTTP : la latence

Au pire

• DNS

• + Ouverture TCP

• + Slow Start

• + 1 RTT mininum

= 4 X latence

= 400 ms

Page 35: Techniques d’accélération des pages Web

Trouver le chemin critique

Chemin critique

1er rendu

Page 36: Techniques d’accélération des pages Web

Ressources bloquantes :

• Redirections

• Génération de la page

• CSS

• Polices

• JS

Ressources gênantes

• Images

• Iframe

• Objets flash / vidéo

Déblayer le chemin critique

Page 37: Techniques d’accélération des pages Web

• Redirections :– Limiter à 1 max

– Jamais côté client

– Surtout sur mobile

Déblayer le chemin critique

Page 38: Techniques d’accélération des pages Web

Génération de la page:

• Caches serveur

• Flush du head

Déblayer le chemin critique

Page 39: Techniques d’accélération des pages Web

Génération de la page:

• Caches serveur

• Flush du head

• Fonctionnalités longues :

XHR

Déblayer le chemin critique

Page 40: Techniques d’accélération des pages Web

Génération de la page:

• Caches serveur

• Flush du head

• Fonctionnalités longues : XHR

• Personnalisation :

Server Side Include

Déblayer le chemin critique

Page 41: Techniques d’accélération des pages Web

• CSS

– Concaténation

– Minification

– Inline ?

Déblayer le chemin critique

Page 42: Techniques d’accélération des pages Web

• Polices

– Les supprimer ...

– Chargement asynchrone

Déblayer le chemin critique

Page 43: Techniques d’accélération des pages Web

Le choix des armes

• <script src> en haut

• <script src> en bas

• Inline

• defer

• Asynchrone

Déblayer le chemin critique : JavaScript

Page 44: Techniques d’accélération des pages Web

<script src> en haut

• Si :

– Petit

– concaténé

– Sans concurrence

Déblayer le chemin critique : JavaScript

Page 45: Techniques d’accélération des pages Web

<script src> en bas

• Si :

– Page rapide

– Gestion des dépendances

– Pas de document.write()

– Pas de iOS

Déblayer le chemin critique : JavaScript

Page 46: Techniques d’accélération des pages Web

<script defer>

– Retardé par le onload

Déblayer le chemin critique : JavaScript

Page 47: Techniques d’accélération des pages Web

• Javascript asynchrone

Déblayer le chemin critique : JavaScript

Page 48: Techniques d’accélération des pages Web

En anglais

• http://www.perfplanet.com/

• http://developer.yahoo.com/pe

rformance/rules.html

• https://developers.google.com

/speed/docs/best-

practices/rules_intro

• http://www.webpagetest.org/fo

rums

En français

• http://checklists.opquast.com/webperf/

• https://groups.google.com/forum/?fromgroups#!forum/performance-web

• @webperf_fr et @WebperfParis

• https://github.com/edas/webperf-book

• http://braincracking.org

S’auto-former