SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
WP SUPER CACHE
ROCKET
RELOADED
suivre et améliorer la perf’ de son WordPress
sans s’arracher les cheveux
https://boris.schapira.dev/wcbdx
Boris
Schapira
Comprendre
Collecter & Automatiser
Savoir-faire, faire savoir
Maintenir
Google & la WebPerf
● « Ne jamais livrer une fonctionnalité qui nous ralentit »
● Communication constante,
même une fois Chrome en position de leadership
● De l’investissement sur la performance:
○ outils ;
○ frameworks ;
○ protocoles ;
○ outils d’évaluation (tant Synthetic que Real User Monitoring).
● Et pour l’utilisateur ?
Google & la WebPerf
« Speed isn’t
just a feature,
it’s the
feature »
« The Google Gospel of Speed », Urs Hoelzle, 2012
Impacts
● Les optimisations qui mènent à :
○ ↘ Coûts d’exploitation
(réduction du bruit, gain de bande passante)
○ Une augmentation des gains publicitaires
● Évolution des usages, nouveaux marchés
● Essor des plateformes de contenus
● Capture des marchés émergents
● Structuration du domaine par
des Bonnes Pratiques
Comment se mesure
la performance web ?
Les types d’indicateurs, les indicateurs-clés
Dans un monde idéal…
Nous voudrions des indicateurs nous permettant de savoir quand un·e
utilisateur·ice :
1. a l’impression, en la regardant, qu’il peut interagir avec une page
2. peut réellement interagir avec la page et vivre une expérience positive
3. essaie réellement d’interagir avec la page, réussit, et le délai entre
l’action et sa prise en compte
SMART
● S comme Spécifique : compréhensible, clair
● M comme Mesurable : récupérable, non-uniquement qualitatif
● A comme Acceptable et Ambitieux : aux valeurs comparables
● R comme Réaliste : correspondant à une réalité
● T comme Temporellement défini
De nombreux indicateurs
● Des indicateurs issus :
○ du navigateur ;
○ de l’analyse vidéo ;
○ de l’observation du CPU et/ou du réseau ;
○ collectés auprès de vrai·e·s utilisateur·ice·s.
● Indicateurs de poids, de quantité, ou jalons temporels
● Indicateurs d’affichage, d’interactivité réelle ou supposée
● Indicateurs d’experts de la performance ou créés par le métier
C’est la jungle !
Les indispensables
● Les « temps serveur » :
○ côté serveur, avec une éventuelle instrumentation (Blackfire, New Relic) ;
○ ou côté client : Time To First Byte (TTFB).
● Les évènements navigateur :
○ DOMContentLoaded aka performance.timing.domContentLoadedEventEnd
○ load ou onload aka performance.timing.loadEventEnd
● ⚠ « temps de chargement »
Les « visuels »
● Start Render / First Paint : la page n’est plus « blanche »
Via la vidéo ou performance.getEntriesByName('first-paint')
● First Contentful Paint : premier pixel non blanc d’une image ou d’un
texte. performance.getEntriesByName('first-contentfull-paint')
● Visually Complete : la partie visible de la page (viewport) est
entièrement rendue
● et entre les deux ? Tout est possible !
Speed Index par l’exemple
200 ms 400 ms 600 ms 800 ms 1000 ms
0 % 60 % 75 % 90 % 100 %
0 % 60 % 60 % 60 % 100 %
Speed Index par l’exemple
Speed Index par l’exemple
1100
Speed Index par l’exemple
1280
Speed Index par l’exemple
200 ms 400 ms 600 ms 800 ms 1000 ms
0 % 60 % 75 % 90 % 100 %
0 % 60 % 60 % 60 % 100 %
1100 ❤
1280
Speed Index
● Mesure la progressivité de l’affichage par le calcul
du nombre de pixels de chaque couleur.
● Un bon indicateur de l’UX (eXpérience Utilisateur)
● Un indicateur pas si simple, perturbé par :
○ Les fonds colorés (état final + éloigné de l’état initial)
○ Tout ce qui bouge : carrousels, modales, vidéos
○ Les mauvais encodages vidéos
○ Les répartitions des pixels de couleurs =
L’interactivité réelle
● Delayed Interactions : à quelle fréquence l'interaction de l'utilisateur
a-t-elle été retardée de plus de 50 ms ? Se base sur le First Input Delay.
● Rage Clicks : clics répétés et rapides sur une zone du viewport
○ informe sur l’agacement des utilisateurs
○ entre 1,25 et 1,5 fois le temps nécessaire à l’affichage*
● Mouse Movements / Cursor Trashing : enregistrement des
mouvements rapides de souris sur l’interface
○ informe(ra) sur l’efficacité de l’interface
*+ d’infos : "User Experience & Performance: Metrics that Matter", Philip Tellis
Hors catégorie
● First Meaningful Paint : une tentative de capturer le moment
pertinent du rendu en observant les fontes, et les « layouts » du
navigateur dans le viewport.
● First Interactive / Time To Interactive : indicateurs complexes qui
observent à la fois les Long Tasks JavaScript (50 ms) et le trafic réseau
pour déterminer des fenêtres d’interaction « qualitativement
garanties » (⚠ noms trompeurs, communication Google ambiguë)
Comment mesurer ?
● Solutions synthétiques : produisent une navigation à la demande, en
contrôlant ou simulant des conditions, pour en capturer l’exécution et
calculer des métriques.
● Real User Monitoring : collecte des données auprès d’utilisateur·ice·s*
au fil de leur navigation, via un script ou le navigateur lui-même.
Comprendre
Collecter & Automatiser
Savoir-faire, faire savoir
Maintenir
Mes premières données
● Les mesures empiriques, c’est bien, mais ça ne donne pas une
information de qualité.
● Analyses ponctuelles : PageSpeed Insights, Dareboost
○ Vision objective, mais limitée (conditions, moment du test)
○ Conseils et bonnes pratiques
○ Parfois, des données RUM en plus (Chrome UX Report)
Données CrUX dans PageSpeed Insights
BigQuery, pour se servir soi-même
Et obtenir toutes les informations
Google Analytics aussi
● « Document Content Loaded Time » ou un Custom Timing
○ Éviter l’indicateur de « Page Load Time »
● Échantillonner à 100% en dessous de 20k PV/jour (siteSiteSampleRate)
● Segmenter pour analyser : matériel, navigateur, FAI…
Surveillance synthétique
● Contextes limités mais maîtrisés
○ Suivi dans le temps
○ Validation d’hypothèses
○ Pas d’installation (permet la mesure de concurrents)
● Stabilité permettant la levée d’alertes
● Parcours utilisateurs aussi
● mais pas uniquement
Comprendre
Collecter & Automatiser
Savoir-faire, faire savoir
Maintenir
Bonnes pratiques
● Quelques dizaines de BPs
○ testables
○ consensuelles
○ pas toujours universelles, mais pas loin
● Plusieurs grandes tendances
○ Optimisation de la diffusion : config serveur(s), protocole(s), CDN(s)
○ Optimisation du rendu : ressources critiques, ressources d’amélioration
○ Réduction des délai d’interaction
Quelques indémodables
● Un code HTML, CSS, et JS taillés avec soin, valide et épuré
○ CSS Purging ; JS tree-shaking… automatisez !
● Des domaines spécialisés (pages, assets) et des web serveurs adaptés
● Du cache (Varnish, CDN…)
● Des polices de caractères optimisées (subset) et non-bloquantes pour le
rendu (utilisez font-display)
Quelques indémodables
● Images :
○ adaptées à la surface de rendu et aux qualités de l’écran (srcset, picture)
○ optimisées* : le bon format en fonction du contenu, optimisé suivant le navigateur
○ chargées uniquement si présentes dans le viewport** (lazy loading)
○ GIF animés => video
* éventuellement via un proxy (Cloudinary, Sirv, ImageKit.io…)
** sur la base d’un échantillon statistique
Images : services dédiés
https://res.cloudinary.com/dareboost/image/fetch/e_blur:200,c_crop,ar_1200:600,b_white/e_g
rayscale/w_1200/b_rgb:294661,o_30/l_1a252f.png,w_1200,h_110,g_south,y_0/w_1000,c_fit,l_tex
t:Roboto_80:Lazy%20Loading%E2%80%99%20faster%20webpages%E2%80%99%20SEO%20friend
ly,x_2,y_-48,co_black,o_80/w_1000,c_fit,l_text:Roboto_80:Lazy%20Loading%E2%80%99%20faste
r%20webpages%E2%80%99%20SEO%20friendly,y_-50,co_white/l_text:Roboto_50:dareboost.com,
g_south_east,x_45,y_35,co_black,o_40/l_text:Roboto_50:dareboost.com,g_south_east,x_45,y_33,co
_white/c_scale,g_south_west,l_db-white,w_350,x_35,y_25/https://blog.dareboost.com/wp-conten
t/uploads/2018/10/metrics_1200.png
Images : services dédiés
https://res.cloudinary.com/dareboost/image/fetch/e_blur:200,c_crop,ar_1200:600,b_white/e_g
rayscale/w_1200/b_rgb:294661,o_30/l_1a252f.png,w_1200,h_110,g_south,y_0/w_1000,c_fit,l_tex
t:Roboto_80:Lazy%20Loading%E2%80%99%20faster%20webpages%E2%80%99%20SEO%20friend
ly,x_2,y_-48,co_black,o_80/w_1000,c_fit,l_text:Roboto_80:Lazy%20Loading%E2%80%99%20faste
r%20webpages%E2%80%99%20SEO%20friendly,y_-50,co_white/l_text:Roboto_50:dareboost.com,
g_south_east,x_45,y_35,co_black,o_40/l_text:Roboto_50:dareboost.com,g_south_east,x_45,y_33,co
_white/c_scale,g_south_west,l_db-white,w_350,x_35,y_25/https://blog.dareboost.com/wp-conten
t/uploads/2018/10/metrics_1200.png
● Polices :
○ adaptées à la surface de rendu et aux qualités de l’écran (srcset, picture)
○ optimisées* : le bon format en fonction du contenu, optimisé suivant le navigateur
○ chargées uniquement si présentes dans le viewport** (lazy loading)
● JavaScript : différer tout ce qui peut l’être (en asynchrone ou non, voire
en injectant au bon moment)
Quelques indémodables
Et niveau Wordpress ?
● À la main
○ Enlever les JS inutiles (emoticons, RLY?)
○ Réduire le nombre de requêtes (Query Monitor)
○ Du Fragment Caching partout où c’est possible
● Cache :
○ Cache objet (exemple : Redis Cache)
○ Cache de pages (exemple : WP Super Cache)
○ Transformation en pages statiques (exemple : Simply Static)
Et niveau Wordpress ?
● Optimisation des assets (exemple : Merge + Minify + Refresh)
● Plugins « tout-en-un » : WP Rocket, W3 Total Cache, AutoOptimize
● Développement de Custom Block Types pour les images
Comment faire le tri ?
● Optimisations à la main : garder l’historique
● Optimisations via des plugins : itérer, tester, communiquer
○ Audits synthétiques : comparaison de versions A / B
○ Des tests fonctionnels, pour éviter les régressions
○ Quelle que soit la ou les solutions automatisé·e·s : envisager des procédures de
désactivation
● Et une fois en Production ?
○ On continue de mesurer pour vérifier qu’on respecte ses budgets de performance
○ On éviter les optimisations à la volée et les montées de versions de plugins
(vous étiez déjà au courant, HEIN, on est d’accord ?!)
Et après c’est fini ?
Non, après on commence la vraie lutte…
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
3rd party
3rd par
3rd
3rd party
3rd party
3rd party
3rd pa
3rd party3rd party
arty
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd partyarty
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party
3rd party3rd party
Merci !
testez ! proposez, venez !

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Le prix de la pub
Le prix de la pubLe prix de la pub
Le prix de la pub
 
100 jours pour développer son trafic !
100 jours pour développer son trafic !100 jours pour développer son trafic !
100 jours pour développer son trafic !
 
Libérez le potentiel de WordPress
Libérez le potentiel de WordPressLibérez le potentiel de WordPress
Libérez le potentiel de WordPress
 
Meetup Webperf : résumé des 3 dernières années
Meetup Webperf : résumé des 3 dernières annéesMeetup Webperf : résumé des 3 dernières années
Meetup Webperf : résumé des 3 dernières années
 
No Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet NeperNo Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet Neper
 
Dette technique et WordPress
Dette technique et WordPressDette technique et WordPress
Dette technique et WordPress
 
L'impact sur le SEO de Googlebot Evergreen
L'impact sur le SEO de Googlebot EvergreenL'impact sur le SEO de Googlebot Evergreen
L'impact sur le SEO de Googlebot Evergreen
 
L'IA dans l'algorithme de Google - Matin neperien 7 juillet 2021
L'IA dans l'algorithme de Google - Matin neperien 7 juillet 2021L'IA dans l'algorithme de Google - Matin neperien 7 juillet 2021
L'IA dans l'algorithme de Google - Matin neperien 7 juillet 2021
 
WordPress et la compatibilité mobile - Semrush & SeoMix
WordPress et la compatibilité mobile - Semrush & SeoMixWordPress et la compatibilité mobile - Semrush & SeoMix
WordPress et la compatibilité mobile - Semrush & SeoMix
 
Philippe Yonnet - Les nouvelles règles pour être indexé par Google
Philippe Yonnet - Les nouvelles règles pour être indexé par GooglePhilippe Yonnet - Les nouvelles règles pour être indexé par Google
Philippe Yonnet - Les nouvelles règles pour être indexé par Google
 
Comment tirer le meilleur profit de WordPress pour son SEO ?
Comment tirer le meilleur profit de WordPress pour son SEO ?Comment tirer le meilleur profit de WordPress pour son SEO ?
Comment tirer le meilleur profit de WordPress pour son SEO ?
 
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
 
Nettoyage de printemps SEO pour WordPress
Nettoyage de printemps SEO pour WordPressNettoyage de printemps SEO pour WordPress
Nettoyage de printemps SEO pour WordPress
 
Introduction à la webperf
Introduction à la webperfIntroduction à la webperf
Introduction à la webperf
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Réussir sa stratégie SEO à l'international : la checklist technique
Réussir sa stratégie SEO à l'international : la checklist techniqueRéussir sa stratégie SEO à l'international : la checklist technique
Réussir sa stratégie SEO à l'international : la checklist technique
 
Les défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEOLes défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEO
 
We❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEOWe❤️SEO 2019 : WebPerf et SEO
We❤️SEO 2019 : WebPerf et SEO
 
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
 
Webperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibesWebperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibes
 

Ähnlich wie "WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019

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
Ludovic Piot
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Horacio Gonzalez
 

Ähnlich wie "WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019 (20)

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
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon Comte
 
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
 
Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)Mythes et réalités des projets Web (Webschool tours)
Mythes et réalités des projets Web (Webschool tours)
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019
 
Webinar - Construire le cahier des charges de son site web.pdf
Webinar - Construire le cahier des charges de son site web.pdfWebinar - Construire le cahier des charges de son site web.pdf
Webinar - Construire le cahier des charges de son site web.pdf
 
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
 
Mesurer la performance : onload, pages
Mesurer la performance : onload, pagesMesurer la performance : onload, pages
Mesurer la performance : onload, pages
 
Core Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, OptimiserCore Web Vitals : Comprendre, Mesurer, Optimiser
Core Web Vitals : Comprendre, Mesurer, Optimiser
 
TYPO3 : quelles nouveautés en 2018 ?
TYPO3 : quelles nouveautés en 2018 ? TYPO3 : quelles nouveautés en 2018 ?
TYPO3 : quelles nouveautés en 2018 ?
 
Panel de solutions javascript
Panel de solutions javascriptPanel de solutions javascript
Panel de solutions javascript
 
Meetup Trello Elegantt
Meetup Trello EleganttMeetup Trello Elegantt
Meetup Trello Elegantt
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Webperf et SEO : quelles métriques suivre ? Quelles optimisations privilégier ?
Webperf et SEO : quelles métriques suivre ? Quelles optimisations privilégier ?Webperf et SEO : quelles métriques suivre ? Quelles optimisations privilégier ?
Webperf et SEO : quelles métriques suivre ? Quelles optimisations privilégier ?
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
JUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdfJUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdf
 
Responsive web design new14
Responsive web design new14Responsive web design new14
Responsive web design new14
 

"WP Super Cache Rocket Reloaded…" – WordCamp Bordeaux 2019

  • 1. WP SUPER CACHE ROCKET RELOADED suivre et améliorer la perf’ de son WordPress sans s’arracher les cheveux https://boris.schapira.dev/wcbdx
  • 4. Google & la WebPerf
  • 5. ● « Ne jamais livrer une fonctionnalité qui nous ralentit » ● Communication constante, même une fois Chrome en position de leadership ● De l’investissement sur la performance: ○ outils ; ○ frameworks ; ○ protocoles ; ○ outils d’évaluation (tant Synthetic que Real User Monitoring). ● Et pour l’utilisateur ? Google & la WebPerf
  • 6. « Speed isn’t just a feature, it’s the feature » « The Google Gospel of Speed », Urs Hoelzle, 2012
  • 7. Impacts ● Les optimisations qui mènent à : ○ ↘ Coûts d’exploitation (réduction du bruit, gain de bande passante) ○ Une augmentation des gains publicitaires ● Évolution des usages, nouveaux marchés ● Essor des plateformes de contenus ● Capture des marchés émergents ● Structuration du domaine par des Bonnes Pratiques
  • 8. Comment se mesure la performance web ? Les types d’indicateurs, les indicateurs-clés
  • 9. Dans un monde idéal… Nous voudrions des indicateurs nous permettant de savoir quand un·e utilisateur·ice : 1. a l’impression, en la regardant, qu’il peut interagir avec une page 2. peut réellement interagir avec la page et vivre une expérience positive 3. essaie réellement d’interagir avec la page, réussit, et le délai entre l’action et sa prise en compte
  • 10. SMART ● S comme Spécifique : compréhensible, clair ● M comme Mesurable : récupérable, non-uniquement qualitatif ● A comme Acceptable et Ambitieux : aux valeurs comparables ● R comme Réaliste : correspondant à une réalité ● T comme Temporellement défini
  • 11. De nombreux indicateurs ● Des indicateurs issus : ○ du navigateur ; ○ de l’analyse vidéo ; ○ de l’observation du CPU et/ou du réseau ; ○ collectés auprès de vrai·e·s utilisateur·ice·s. ● Indicateurs de poids, de quantité, ou jalons temporels ● Indicateurs d’affichage, d’interactivité réelle ou supposée ● Indicateurs d’experts de la performance ou créés par le métier C’est la jungle !
  • 12. Les indispensables ● Les « temps serveur » : ○ côté serveur, avec une éventuelle instrumentation (Blackfire, New Relic) ; ○ ou côté client : Time To First Byte (TTFB). ● Les évènements navigateur : ○ DOMContentLoaded aka performance.timing.domContentLoadedEventEnd ○ load ou onload aka performance.timing.loadEventEnd ● ⚠ « temps de chargement »
  • 13. Les « visuels » ● Start Render / First Paint : la page n’est plus « blanche » Via la vidéo ou performance.getEntriesByName('first-paint') ● First Contentful Paint : premier pixel non blanc d’une image ou d’un texte. performance.getEntriesByName('first-contentfull-paint') ● Visually Complete : la partie visible de la page (viewport) est entièrement rendue ● et entre les deux ? Tout est possible !
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Speed Index par l’exemple 200 ms 400 ms 600 ms 800 ms 1000 ms 0 % 60 % 75 % 90 % 100 % 0 % 60 % 60 % 60 % 100 %
  • 19. Speed Index par l’exemple
  • 20. Speed Index par l’exemple 1100
  • 21. Speed Index par l’exemple 1280
  • 22. Speed Index par l’exemple 200 ms 400 ms 600 ms 800 ms 1000 ms 0 % 60 % 75 % 90 % 100 % 0 % 60 % 60 % 60 % 100 % 1100 ❤ 1280
  • 23. Speed Index ● Mesure la progressivité de l’affichage par le calcul du nombre de pixels de chaque couleur. ● Un bon indicateur de l’UX (eXpérience Utilisateur) ● Un indicateur pas si simple, perturbé par : ○ Les fonds colorés (état final + éloigné de l’état initial) ○ Tout ce qui bouge : carrousels, modales, vidéos ○ Les mauvais encodages vidéos ○ Les répartitions des pixels de couleurs =
  • 24. L’interactivité réelle ● Delayed Interactions : à quelle fréquence l'interaction de l'utilisateur a-t-elle été retardée de plus de 50 ms ? Se base sur le First Input Delay. ● Rage Clicks : clics répétés et rapides sur une zone du viewport ○ informe sur l’agacement des utilisateurs ○ entre 1,25 et 1,5 fois le temps nécessaire à l’affichage* ● Mouse Movements / Cursor Trashing : enregistrement des mouvements rapides de souris sur l’interface ○ informe(ra) sur l’efficacité de l’interface *+ d’infos : "User Experience & Performance: Metrics that Matter", Philip Tellis
  • 25. Hors catégorie ● First Meaningful Paint : une tentative de capturer le moment pertinent du rendu en observant les fontes, et les « layouts » du navigateur dans le viewport. ● First Interactive / Time To Interactive : indicateurs complexes qui observent à la fois les Long Tasks JavaScript (50 ms) et le trafic réseau pour déterminer des fenêtres d’interaction « qualitativement garanties » (⚠ noms trompeurs, communication Google ambiguë)
  • 26. Comment mesurer ? ● Solutions synthétiques : produisent une navigation à la demande, en contrôlant ou simulant des conditions, pour en capturer l’exécution et calculer des métriques. ● Real User Monitoring : collecte des données auprès d’utilisateur·ice·s* au fil de leur navigation, via un script ou le navigateur lui-même.
  • 28. Mes premières données ● Les mesures empiriques, c’est bien, mais ça ne donne pas une information de qualité. ● Analyses ponctuelles : PageSpeed Insights, Dareboost ○ Vision objective, mais limitée (conditions, moment du test) ○ Conseils et bonnes pratiques ○ Parfois, des données RUM en plus (Chrome UX Report)
  • 29. Données CrUX dans PageSpeed Insights
  • 30. BigQuery, pour se servir soi-même
  • 31. Et obtenir toutes les informations
  • 32. Google Analytics aussi ● « Document Content Loaded Time » ou un Custom Timing ○ Éviter l’indicateur de « Page Load Time » ● Échantillonner à 100% en dessous de 20k PV/jour (siteSiteSampleRate) ● Segmenter pour analyser : matériel, navigateur, FAI…
  • 33. Surveillance synthétique ● Contextes limités mais maîtrisés ○ Suivi dans le temps ○ Validation d’hypothèses ○ Pas d’installation (permet la mesure de concurrents) ● Stabilité permettant la levée d’alertes ● Parcours utilisateurs aussi ● mais pas uniquement
  • 35. Bonnes pratiques ● Quelques dizaines de BPs ○ testables ○ consensuelles ○ pas toujours universelles, mais pas loin ● Plusieurs grandes tendances ○ Optimisation de la diffusion : config serveur(s), protocole(s), CDN(s) ○ Optimisation du rendu : ressources critiques, ressources d’amélioration ○ Réduction des délai d’interaction
  • 36. Quelques indémodables ● Un code HTML, CSS, et JS taillés avec soin, valide et épuré ○ CSS Purging ; JS tree-shaking… automatisez ! ● Des domaines spécialisés (pages, assets) et des web serveurs adaptés ● Du cache (Varnish, CDN…) ● Des polices de caractères optimisées (subset) et non-bloquantes pour le rendu (utilisez font-display)
  • 37. Quelques indémodables ● Images : ○ adaptées à la surface de rendu et aux qualités de l’écran (srcset, picture) ○ optimisées* : le bon format en fonction du contenu, optimisé suivant le navigateur ○ chargées uniquement si présentes dans le viewport** (lazy loading) ○ GIF animés => video * éventuellement via un proxy (Cloudinary, Sirv, ImageKit.io…) ** sur la base d’un échantillon statistique
  • 38. Images : services dédiés https://res.cloudinary.com/dareboost/image/fetch/e_blur:200,c_crop,ar_1200:600,b_white/e_g rayscale/w_1200/b_rgb:294661,o_30/l_1a252f.png,w_1200,h_110,g_south,y_0/w_1000,c_fit,l_tex t:Roboto_80:Lazy%20Loading%E2%80%99%20faster%20webpages%E2%80%99%20SEO%20friend ly,x_2,y_-48,co_black,o_80/w_1000,c_fit,l_text:Roboto_80:Lazy%20Loading%E2%80%99%20faste r%20webpages%E2%80%99%20SEO%20friendly,y_-50,co_white/l_text:Roboto_50:dareboost.com, g_south_east,x_45,y_35,co_black,o_40/l_text:Roboto_50:dareboost.com,g_south_east,x_45,y_33,co _white/c_scale,g_south_west,l_db-white,w_350,x_35,y_25/https://blog.dareboost.com/wp-conten t/uploads/2018/10/metrics_1200.png
  • 39. Images : services dédiés https://res.cloudinary.com/dareboost/image/fetch/e_blur:200,c_crop,ar_1200:600,b_white/e_g rayscale/w_1200/b_rgb:294661,o_30/l_1a252f.png,w_1200,h_110,g_south,y_0/w_1000,c_fit,l_tex t:Roboto_80:Lazy%20Loading%E2%80%99%20faster%20webpages%E2%80%99%20SEO%20friend ly,x_2,y_-48,co_black,o_80/w_1000,c_fit,l_text:Roboto_80:Lazy%20Loading%E2%80%99%20faste r%20webpages%E2%80%99%20SEO%20friendly,y_-50,co_white/l_text:Roboto_50:dareboost.com, g_south_east,x_45,y_35,co_black,o_40/l_text:Roboto_50:dareboost.com,g_south_east,x_45,y_33,co _white/c_scale,g_south_west,l_db-white,w_350,x_35,y_25/https://blog.dareboost.com/wp-conten t/uploads/2018/10/metrics_1200.png
  • 40. ● Polices : ○ adaptées à la surface de rendu et aux qualités de l’écran (srcset, picture) ○ optimisées* : le bon format en fonction du contenu, optimisé suivant le navigateur ○ chargées uniquement si présentes dans le viewport** (lazy loading) ● JavaScript : différer tout ce qui peut l’être (en asynchrone ou non, voire en injectant au bon moment) Quelques indémodables
  • 41. Et niveau Wordpress ? ● À la main ○ Enlever les JS inutiles (emoticons, RLY?) ○ Réduire le nombre de requêtes (Query Monitor) ○ Du Fragment Caching partout où c’est possible ● Cache : ○ Cache objet (exemple : Redis Cache) ○ Cache de pages (exemple : WP Super Cache) ○ Transformation en pages statiques (exemple : Simply Static)
  • 42. Et niveau Wordpress ? ● Optimisation des assets (exemple : Merge + Minify + Refresh) ● Plugins « tout-en-un » : WP Rocket, W3 Total Cache, AutoOptimize ● Développement de Custom Block Types pour les images
  • 43. Comment faire le tri ? ● Optimisations à la main : garder l’historique ● Optimisations via des plugins : itérer, tester, communiquer ○ Audits synthétiques : comparaison de versions A / B ○ Des tests fonctionnels, pour éviter les régressions ○ Quelle que soit la ou les solutions automatisé·e·s : envisager des procédures de désactivation ● Et une fois en Production ? ○ On continue de mesurer pour vérifier qu’on respecte ses budgets de performance ○ On éviter les optimisations à la volée et les montées de versions de plugins (vous étiez déjà au courant, HEIN, on est d’accord ?!)
  • 44. Et après c’est fini ? Non, après on commence la vraie lutte…
  • 45. 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party 3rd party 3rd par 3rd 3rd party 3rd party 3rd party 3rd pa 3rd party3rd party arty 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd partyarty 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party 3rd party3rd party
  • 46. Merci ! testez ! proposez, venez !