SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Web Performance
Appliquer les règles de base
Jonathan Buttigieg
EPITECH - 05/12/2013

jeudi 5 décembre 13
Qui suis-je ?
• Consultant, formateur

et
développeur WordPress

• Co-fondateur

de WP Media,
société éditrice de WP
Rocket

• Auteur

des livres «STF pour
le web : PHP/MySQL» et
«Mémento : WordPress
Programmation»

jeudi 5 décembre 13
Pourquoi optimiser son site
Internet ?
57% des visiteurs abandonnent
une page qui met plus de 3s à
s’afficher

jeudi 5 décembre 13
Comment mesurer le temps de
chargement ?
• GT

Metrix

http://gtmetrix.com/

• Pingdom Tools

http://tools.pingdom.com/fpt/

• WebPageTest

http://www.webpagetest.org/

• PageSpeed

Insight

https://developers.google.com/speed/pagespeed/
insights/

jeudi 5 décembre 13
Pourquoi il ne faut pas se fier à
100% aux résultats ?
• Bonnes

notes != site rapide

• Serveurs

de test à l’étranger

•

Vancouver, Canada (GT Metrix)

•

Texas, États-Unis (Pingdom Tools)

• Utiliser

un serveur + proche
de la France
•

London, Angleterre (GT Metrix)

•

Amsterdam, Pays-Bas (PingdomTools)

jeudi 5 décembre 13
Pourquoi optimiser le poids des
images ?
• Ressources

les plus lourdes

• Très

nombreuses = plus de
chances de ralentir son site

• Le

56k est encore présent
via les mobiles #troll

jeudi 5 décembre 13
Comment optimiser le poids des
images ?
•

Photoshop est votre ami !

•

Enregistrer pour le web et pas
Engeristrer sous

•

Choisir le bon format (PNG ou
JPG)

•

Compression des JPG à 60%

•

Oublier le GIF à la place du
PNG 8

jeudi 5 décembre 13
Comment optimiser le poids des
images ?
Outils serveur

Applications

•

OptiPNG PNGCrush,
PNGOUT

•

ImageOptim (Mac Only),
OptiPng (Windows Only)

•

Jpegtran, JPEGOptim

•

tinypng, Smush.it, Kraken.io,
JPEGmini

jeudi 5 décembre 13
Les bonnes pratiques
d’intégration des images
• Ajouter

les attributs width et
height sur les balises <img>
= amélioration du temps
chargement

• Ne

JAMAIS redimensionner
vos images en CSS
= diminution de la bande
passante

jeudi 5 décembre 13
Le chargement différé des
images : LazyLoad
• La

IOD (Image on demand)

• Réduction

importante des
requêtes HTTP

• Simple

et rapide à mettre
en place. Même pas besoin
de jQuery !

• Technique

utilisée par les +
gros sites : Youtube,
Dailymotion

jeudi 5 décembre 13
Le chargement différé des
images : LazyLoad
• Un

pixel transparent de taille
1x1px pour l’attribut src
(DataURI de préférence)

• Un

attribut supplémentaire
contenant le chemin vers
l’image réelle
balise <noscript> pour
le SEO

Scripts JS
•

http://www.appelsiini.net/projects/lazyload

•

https://github.com/ezYZ/Lazy-Load-Images-without-jQuery

•

https://github.com/luis-almeida/unveil

• Une

Plugins WordPress
LazyLoad : http://wordpress.org/plugins/lazy-load/

•

jeudi 5 décembre 13

•

BJ LazyLoad : http://wordpress.org/plugins/bj-lazy-load/
Regrouper les images de
décoration : CSS Images Sprite
• Regrouper

toutes les images
de décoration CSS en une
seule

• Réduction

importante des
requêtes HTTP

• Simple, mais

plus long à
mettre en place

jeudi 5 décembre 13
Regrouper les images de
décoration : CSS Images Sprite
WebService
•

Spritecow

Outils
•

http://www.spritecow.com/

•

Spritebox

http://compass-style.org/

•

http://www.spritebox.net/

•

Spritegen

Compass
Stitches
http://draeton.github.io/stitches/

•

http://fr.spritegen.website-

Glue
https://github.com/jorgebastida/glue

performance.org/

•

SpriteRight (Mac Only)
http://spriterightapp.com/

jeudi 5 décembre 13
Les bonnes pratiques
d’intégration des fichiers CSS & JS
CSS

JavaScript

• Toujours

<head>

• Bannir
• Ne

dans la balise

les <style> si possible

jamais utilisé l’attribut
style

jeudi 5 décembre 13

• Placer

au plus bas. Au-dessus
de </body> dans l’idéal

• Si

le poids du fichier minifié
<= 2ko, mettre le fichier
dans le <head>
Concaténation & Minification des
fichiers CSS & JS
Minification
• Réduction

fichiers

du poids des

• Plus

rapide à charger +
économie de bande
passante

• Suppression

des espaces
blancs et des retours à la
ligne

jeudi 5 décembre 13

Concaténation
• Combine

les fichiers en un
seul (enfin pas vraiment...)

• Réduction

du nombre de
requêtes HTTP

• Moins

de requêtes plus
lourdes + performant que
plus de requêtes moins
lourdes
Concaténation & Minification des
fichiers CSS & JS
Librairies & App
• Google

Code Minify

https://code.google.com/p/minify/

• CSSMin

& JSMin

Outils Web
• Yui

Compressor

http://refresh-sf.com/yui/

• JSCompress
http://jscompress.com/

• Compass
(outputFormat : compressed)

• Google

Closure Compiler

http://closure-compiler.appspot.com/home

• Uglify.js

& Grunt.js

• CSS

Minifier

http://cssminifier.com/
jeudi 5 décembre 13
Chargement différé des fichiers
JavaScript
• Chargement

dit
«asynchrone» des fichiers

• Ne

bloque pas le
chargement de la page

• Indispensable

pour les
scripts de partage
Facebook, Twitter & Google
+

jeudi 5 décembre 13

Libraires JavaScript
•

LabJS : http://labjs.com/

•

head.js : http://headjs.com/
Les Data-URI ou Images Inline
• Contient

directement les
données d’une image

• Encodage
• Utiliser

en Base64

pour les images de
petites tailles/poids

Avantages
•

Réduction des requêtes HTTP

Inconvénients
Problème avec certains
navigateurs en fonction du type

•

jeudi 5 décembre 13

•

Augmente légèrement la taille
des fichiers (environ 10% après
compression Gzip)
Compression Gzip des fichiers
via .htaccess
• Réduction

du poids des
fichiers = économie de
bande passante

• Modification

du type de
fichier via le mod_deflate
d’Apache

• Plus

PHP

jeudi 5 décembre 13

rapide qu’un traitement
Code complet : https://gist.github.com/GeekPress/7796748
Compression Gzip des fichiers
via .htaccess

jeudi 5 décembre 13
Compression Gzip des fichiers
via .htaccess

jeudi 5 décembre 13
Optimisation du cache navigateur
via .htaccess
• Éviter

de télécharger les
ressources à chaque visite =
réduction du temps de
chargement
Code complet : https://gist.github.com/GeekPress/7803194

• Modification

des requêtes
HTTP via le mod_expires
d’Apache

• Définir

un temps de mise
en cache en fonction du
type de ressource

jeudi 5 décembre 13
L’indispensable : Système de
cache statique
•

•

•

Éviter les traitements PHP et
requêtes SQL à chaque visite

Plugins WordPress
•

http://wordpress.org/plugins/wp-supercache/

Générer un fichier HTML grâce
au 1er visiteur
Servir le fichier de cache aux
autres visiteurs

•

Amélioration du temps de
chargement et de l’indextion des
pages

jeudi 5 décembre 13

W3 Total Cache
http://wordpress.org/plugins/w3-total-cache/

•
•

WP Super Cache

Quick Cache
http://wordpress.org/plugins/quick-cache/

•

WP Rocket
http://wp-rocket.me/
Le Domain Sharding
• Répartition

des ressources
(JS, CSS & images) entre
plusieurs domaines
en place des sousdomaines pour cette
solution

Avantages
•

• Mettre

• Pas

plus de 3 domaines
dédiés au Domain Sharding

jeudi 5 décembre 13

Contourne la limite des
téléchargements parallèles des
navigateurs (6 à 8)

Inconvénients
•

Résolution DNS
supplémentaires (surtout sur
mobile)
Les Content Delivery Network
•

CDN != Domain Sharding

•

Servir les ressources en fonction
de la localisation des visiteurs

•

Diminution du temps de latence

•

•

Services
MaxCDN
http://www.maxcdn.com/

CloudFlare
https://fr.cloudflare.com/

•

Indispensable pour les sites
multilingues

•

Amazon CloudFront
http://aws.amazon.com/fr/cloudfront/

•

Même inconvénient que le
Domain Sharding

jeudi 5 décembre 13

•

OVH CDN
http://www.ovh.com/fr/cdn/
Pour aller plus loin
•NGINX

http://wiki.nginx.org/Main

•Varnish

https://www.varnish-cache.org/

•Redis
http://redis.io/

jeudi 5 décembre 13
Merci pour votre écoute

jeudi 5 décembre 13

Contenu connexe

Tendances

HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueJean-Pierre Vincent
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressDaniel Roch - SeoMix
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartLa FeWeb
 
La guerre SEO du CMS : WordPress VS Drupal
La guerre SEO du CMS : WordPress VS DrupalLa guerre SEO du CMS : WordPress VS Drupal
La guerre SEO du CMS : WordPress VS DrupalDaniel Roch - SeoMix
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019Boris SCHAPIRA
 
Présentation de Kirby CMS
Présentation de Kirby CMSPrésentation de Kirby CMS
Présentation de Kirby CMSGilles Vauvarin
 
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
 
Quelle galerie photo en ligne pour votre projet ?
Quelle galerie photo en ligne pour votre projet ?Quelle galerie photo en ligne pour votre projet ?
Quelle galerie photo en ligne pour votre projet ?StrasWeb
 
Responsive logic - Kiwiparty
Responsive logic - KiwipartyResponsive logic - Kiwiparty
Responsive logic - KiwipartyJulien Cabanès
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionMarc Boivin
 
Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Cédric MORIN
 
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel Roch
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel RochWordpress et referencement naturel - WordCamp Paris 2013, Daniel Roch
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel RochDaniel Roch - SeoMix
 
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
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Componentscjolif
 

Tendances (20)

HTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantiqueHTML5 maintenant partie 1 : la sémantique
HTML5 maintenant partie 1 : la sémantique
 
Optimisation de son site web
Optimisation de son site webOptimisation de son site web
Optimisation de son site web
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
 
WordPress et SEO - SEOCampus 2013
WordPress et SEO - SEOCampus 2013WordPress et SEO - SEOCampus 2013
WordPress et SEO - SEOCampus 2013
 
Nice meetup
Nice meetupNice meetup
Nice meetup
 
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric DussartTwitter Bootstrap par Antoine Guédès et Cédric Dussart
Twitter Bootstrap par Antoine Guédès et Cédric Dussart
 
La guerre SEO du CMS : WordPress VS Drupal
La guerre SEO du CMS : WordPress VS DrupalLa guerre SEO du CMS : WordPress VS Drupal
La guerre SEO du CMS : WordPress VS Drupal
 
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019
 
Présentation de Kirby CMS
Présentation de Kirby CMSPrésentation de Kirby CMS
Présentation de Kirby CMS
 
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 ?
 
Quelle galerie photo en ligne pour votre projet ?
Quelle galerie photo en ligne pour votre projet ?Quelle galerie photo en ligne pour votre projet ?
Quelle galerie photo en ligne pour votre projet ?
 
Cms Podcamp 2009
Cms Podcamp 2009Cms Podcamp 2009
Cms Podcamp 2009
 
Responsive logic - Kiwiparty
Responsive logic - KiwipartyResponsive logic - Kiwiparty
Responsive logic - Kiwiparty
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en production
 
Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel Roch
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel RochWordpress et referencement naturel - WordCamp Paris 2013, Daniel Roch
Wordpress et referencement naturel - WordCamp Paris 2013, Daniel Roch
 
WordPress + HTTPS
WordPress + HTTPSWordPress + HTTPS
WordPress + HTTPS
 
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.
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 

Similaire à Web performance - appliquer les règles de base

Améliorer la rapidité de son site web
Améliorer la rapidité de son site webAméliorer la rapidité de son site web
Améliorer la rapidité de son site webEmmanuel Gautier
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPressAurélien Denis
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web MobileWilly Leloutre
 
Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalSkilld
 
Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Refficience
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Peak Ace
 
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
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric Briand
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric BriandOpen XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric Briand
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric BriandPublicis Sapient Engineering
 
Vitesse de chargement de site & référencement naturel (SEO)
Vitesse de chargement de site & référencement naturel (SEO)Vitesse de chargement de site & référencement naturel (SEO)
Vitesse de chargement de site & référencement naturel (SEO)Marc Akoley
 
Solutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressSolutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressStéphane Plante
 
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
 
Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Jean-Pierre Vincent
 
L'incidence des Performances sur le SEO
 L'incidence des Performances sur le SEO L'incidence des Performances sur le SEO
L'incidence des Performances sur le SEOPeak Ace
 
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...Clément OUDOT
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéFasterize
 

Similaire à Web performance - appliquer les règles de base (20)

Améliorer la rapidité de son site web
Améliorer la rapidité de son site webAméliorer la rapidité de son site web
Améliorer la rapidité de son site web
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web Mobile
 
Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances Drupal
 
Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
Améliorer les performances de vos sites web une priorité pour 2018 - Petit dé...
 
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
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric Briand
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric BriandOpen XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric Briand
Open XKE - Google Compute Engine par Jean-Baptiste Claramonte et Eric Briand
 
Google Compute Engine
Google Compute EngineGoogle Compute Engine
Google Compute Engine
 
Vitesse de chargement de site & référencement naturel (SEO)
Vitesse de chargement de site & référencement naturel (SEO)Vitesse de chargement de site & référencement naturel (SEO)
Vitesse de chargement de site & référencement naturel (SEO)
 
Solutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPressSolutions Web « prêtes à porter » avec WordPress
Solutions Web « prêtes à porter » avec WordPress
 
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
 
Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010
 
L'incidence des Performances sur le SEO
 L'incidence des Performances sur le SEO L'incidence des Performances sur le SEO
L'incidence des Performances sur le SEO
 
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
[JDLL 2018] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir l...
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploité
 

Web performance - appliquer les règles de base

  • 1. Web Performance Appliquer les règles de base Jonathan Buttigieg EPITECH - 05/12/2013 jeudi 5 décembre 13
  • 2. Qui suis-je ? • Consultant, formateur et développeur WordPress • Co-fondateur de WP Media, société éditrice de WP Rocket • Auteur des livres «STF pour le web : PHP/MySQL» et «Mémento : WordPress Programmation» jeudi 5 décembre 13
  • 3. Pourquoi optimiser son site Internet ? 57% des visiteurs abandonnent une page qui met plus de 3s à s’afficher jeudi 5 décembre 13
  • 4. Comment mesurer le temps de chargement ? • GT Metrix http://gtmetrix.com/ • Pingdom Tools http://tools.pingdom.com/fpt/ • WebPageTest http://www.webpagetest.org/ • PageSpeed Insight https://developers.google.com/speed/pagespeed/ insights/ jeudi 5 décembre 13
  • 5. Pourquoi il ne faut pas se fier à 100% aux résultats ? • Bonnes notes != site rapide • Serveurs de test à l’étranger • Vancouver, Canada (GT Metrix) • Texas, États-Unis (Pingdom Tools) • Utiliser un serveur + proche de la France • London, Angleterre (GT Metrix) • Amsterdam, Pays-Bas (PingdomTools) jeudi 5 décembre 13
  • 6. Pourquoi optimiser le poids des images ? • Ressources les plus lourdes • Très nombreuses = plus de chances de ralentir son site • Le 56k est encore présent via les mobiles #troll jeudi 5 décembre 13
  • 7. Comment optimiser le poids des images ? • Photoshop est votre ami ! • Enregistrer pour le web et pas Engeristrer sous • Choisir le bon format (PNG ou JPG) • Compression des JPG à 60% • Oublier le GIF à la place du PNG 8 jeudi 5 décembre 13
  • 8. Comment optimiser le poids des images ? Outils serveur Applications • OptiPNG PNGCrush, PNGOUT • ImageOptim (Mac Only), OptiPng (Windows Only) • Jpegtran, JPEGOptim • tinypng, Smush.it, Kraken.io, JPEGmini jeudi 5 décembre 13
  • 9. Les bonnes pratiques d’intégration des images • Ajouter les attributs width et height sur les balises <img> = amélioration du temps chargement • Ne JAMAIS redimensionner vos images en CSS = diminution de la bande passante jeudi 5 décembre 13
  • 10. Le chargement différé des images : LazyLoad • La IOD (Image on demand) • Réduction importante des requêtes HTTP • Simple et rapide à mettre en place. Même pas besoin de jQuery ! • Technique utilisée par les + gros sites : Youtube, Dailymotion jeudi 5 décembre 13
  • 11. Le chargement différé des images : LazyLoad • Un pixel transparent de taille 1x1px pour l’attribut src (DataURI de préférence) • Un attribut supplémentaire contenant le chemin vers l’image réelle balise <noscript> pour le SEO Scripts JS • http://www.appelsiini.net/projects/lazyload • https://github.com/ezYZ/Lazy-Load-Images-without-jQuery • https://github.com/luis-almeida/unveil • Une Plugins WordPress LazyLoad : http://wordpress.org/plugins/lazy-load/ • jeudi 5 décembre 13 • BJ LazyLoad : http://wordpress.org/plugins/bj-lazy-load/
  • 12. Regrouper les images de décoration : CSS Images Sprite • Regrouper toutes les images de décoration CSS en une seule • Réduction importante des requêtes HTTP • Simple, mais plus long à mettre en place jeudi 5 décembre 13
  • 13. Regrouper les images de décoration : CSS Images Sprite WebService • Spritecow Outils • http://www.spritecow.com/ • Spritebox http://compass-style.org/ • http://www.spritebox.net/ • Spritegen Compass Stitches http://draeton.github.io/stitches/ • http://fr.spritegen.website- Glue https://github.com/jorgebastida/glue performance.org/ • SpriteRight (Mac Only) http://spriterightapp.com/ jeudi 5 décembre 13
  • 14. Les bonnes pratiques d’intégration des fichiers CSS & JS CSS JavaScript • Toujours <head> • Bannir • Ne dans la balise les <style> si possible jamais utilisé l’attribut style jeudi 5 décembre 13 • Placer au plus bas. Au-dessus de </body> dans l’idéal • Si le poids du fichier minifié <= 2ko, mettre le fichier dans le <head>
  • 15. Concaténation & Minification des fichiers CSS & JS Minification • Réduction fichiers du poids des • Plus rapide à charger + économie de bande passante • Suppression des espaces blancs et des retours à la ligne jeudi 5 décembre 13 Concaténation • Combine les fichiers en un seul (enfin pas vraiment...) • Réduction du nombre de requêtes HTTP • Moins de requêtes plus lourdes + performant que plus de requêtes moins lourdes
  • 16. Concaténation & Minification des fichiers CSS & JS Librairies & App • Google Code Minify https://code.google.com/p/minify/ • CSSMin & JSMin Outils Web • Yui Compressor http://refresh-sf.com/yui/ • JSCompress http://jscompress.com/ • Compass (outputFormat : compressed) • Google Closure Compiler http://closure-compiler.appspot.com/home • Uglify.js & Grunt.js • CSS Minifier http://cssminifier.com/ jeudi 5 décembre 13
  • 17. Chargement différé des fichiers JavaScript • Chargement dit «asynchrone» des fichiers • Ne bloque pas le chargement de la page • Indispensable pour les scripts de partage Facebook, Twitter & Google + jeudi 5 décembre 13 Libraires JavaScript • LabJS : http://labjs.com/ • head.js : http://headjs.com/
  • 18. Les Data-URI ou Images Inline • Contient directement les données d’une image • Encodage • Utiliser en Base64 pour les images de petites tailles/poids Avantages • Réduction des requêtes HTTP Inconvénients Problème avec certains navigateurs en fonction du type • jeudi 5 décembre 13 • Augmente légèrement la taille des fichiers (environ 10% après compression Gzip)
  • 19. Compression Gzip des fichiers via .htaccess • Réduction du poids des fichiers = économie de bande passante • Modification du type de fichier via le mod_deflate d’Apache • Plus PHP jeudi 5 décembre 13 rapide qu’un traitement Code complet : https://gist.github.com/GeekPress/7796748
  • 20. Compression Gzip des fichiers via .htaccess jeudi 5 décembre 13
  • 21. Compression Gzip des fichiers via .htaccess jeudi 5 décembre 13
  • 22. Optimisation du cache navigateur via .htaccess • Éviter de télécharger les ressources à chaque visite = réduction du temps de chargement Code complet : https://gist.github.com/GeekPress/7803194 • Modification des requêtes HTTP via le mod_expires d’Apache • Définir un temps de mise en cache en fonction du type de ressource jeudi 5 décembre 13
  • 23. L’indispensable : Système de cache statique • • • Éviter les traitements PHP et requêtes SQL à chaque visite Plugins WordPress • http://wordpress.org/plugins/wp-supercache/ Générer un fichier HTML grâce au 1er visiteur Servir le fichier de cache aux autres visiteurs • Amélioration du temps de chargement et de l’indextion des pages jeudi 5 décembre 13 W3 Total Cache http://wordpress.org/plugins/w3-total-cache/ • • WP Super Cache Quick Cache http://wordpress.org/plugins/quick-cache/ • WP Rocket http://wp-rocket.me/
  • 24. Le Domain Sharding • Répartition des ressources (JS, CSS & images) entre plusieurs domaines en place des sousdomaines pour cette solution Avantages • • Mettre • Pas plus de 3 domaines dédiés au Domain Sharding jeudi 5 décembre 13 Contourne la limite des téléchargements parallèles des navigateurs (6 à 8) Inconvénients • Résolution DNS supplémentaires (surtout sur mobile)
  • 25. Les Content Delivery Network • CDN != Domain Sharding • Servir les ressources en fonction de la localisation des visiteurs • Diminution du temps de latence • • Services MaxCDN http://www.maxcdn.com/ CloudFlare https://fr.cloudflare.com/ • Indispensable pour les sites multilingues • Amazon CloudFront http://aws.amazon.com/fr/cloudfront/ • Même inconvénient que le Domain Sharding jeudi 5 décembre 13 • OVH CDN http://www.ovh.com/fr/cdn/
  • 26. Pour aller plus loin •NGINX http://wiki.nginx.org/Main •Varnish https://www.varnish-cache.org/ •Redis http://redis.io/ jeudi 5 décembre 13
  • 27. Merci pour votre écoute jeudi 5 décembre 13