Aller au contenu principal
Performance 8 min de lecture

Optimiser les performances web : guide complet 2025

LC

Louis Cercle

Développeur Full-Stack

En 2025, Google utilise les Core Web Vitals comme facteur de classement. Un site lent = moins de visiteurs, moins de conversions, moins de revenus. Voici comment optimiser votre site pour atteindre des scores parfaits.

Les Core Web Vitals expliqués

Google mesure trois métriques essentielles pour évaluer l'expérience utilisateur :

LCP

Largest Contentful Paint

Temps d'affichage du contenu principal

Objectif : < 2.5s
INP

Interaction to Next Paint

Réactivité aux interactions

Objectif : < 200ms
CLS

Cumulative Layout Shift

Stabilité visuelle de la page

Objectif : < 0.1

1. Optimiser le LCP

Le LCP mesure le temps d'affichage du plus grand élément visible (généralement une image hero ou un titre). Voici comment l'améliorer :

Précharger les ressources critiques

<!-- Précharger l'image LCP -->
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">

<!-- Précharger les polices critiques -->
<link rel="preload" as="font" type="font/woff2" 
      href="/fonts/inter.woff2" crossorigin>

<!-- Préconnexion aux domaines tiers -->
<link rel="preconnect" href="https://fonts.googleapis.com">

Optimiser les images

<!-- Utiliser des formats modernes avec fallback -->
<picture>
  <source srcset="/hero.avif" type="image/avif">
  <source srcset="/hero.webp" type="image/webp">
  <img src="/hero.jpg" alt="Hero" 
       width="1200" height="600"
       fetchpriority="high"
       decoding="async">
</picture>

<!-- Lazy loading pour les images non-critiques -->
<img src="/photo.webp" loading="lazy" decoding="async">

2. Améliorer l'INP

L'INP remplace le FID en 2024. Il mesure la réactivité globale aux interactions utilisateur.

Conseil clé

Évitez les tâches JavaScript longues (>50ms) sur le thread principal. Utilisez Web Workers pour les calculs intensifs.

// Mauvais : bloque le thread principal
function processLargeArray(data) {
  return data.map(item => heavyComputation(item));
}

// Bon : utilise requestIdleCallback
function processInChunks(data, callback) {
  const CHUNK_SIZE = 100;
  let index = 0;
  
  function processChunk(deadline) {
    while (index < data.length && deadline.timeRemaining() > 0) {
      callback(data[index]);
      index++;
    }
    if (index < data.length) {
      requestIdleCallback(processChunk);
    }
  }
  
  requestIdleCallback(processChunk);
}

// Encore mieux : Web Worker
const worker = new Worker('/worker.js');
worker.postMessage({ data: largeArray });
worker.onmessage = (e) => {
  console.log('Résultat:', e.data);
};

3. Réduire le CLS

Le CLS mesure les décalages visuels inattendus. Rien de plus frustrant qu'un bouton qui bouge au moment où on clique !

  • Toujours définir width/height sur les images et vidéos
  • Réserver l'espace pour les publicités et embeds
  • Éviter les polices web qui causent un FOIT/FOUT
  • Animer avec transform plutôt que top/left/width/height
/* Mauvais : déclenche un reflow */
.element {
  transition: width 0.3s, left 0.3s;
}

/* Bon : utilise le GPU, pas de reflow */
.element {
  transition: transform 0.3s;
}

/* Réserver l'espace pour les images */
.image-container {
  aspect-ratio: 16 / 9;
  background: #f0f0f0;
}

/* Font-display pour éviter le FOIT */
@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter.woff2') format('woff2');
  font-display: swap;
}

4. Optimisations serveur

Compression

  • Brotli (préféré) ou Gzip
  • Niveau de compression optimal
  • Compression statique à la build

Cache HTTP

  • Cache-Control: max-age=31536000
  • ETags pour la validation
  • Versionning des assets (?v=hash)

CDN

  • Cloudflare, Fastly, AWS CloudFront
  • Edge caching global
  • Réduction de la latence

HTTP/2 & HTTP/3

  • Multiplexing des requêtes
  • Server Push (avec précaution)
  • Header compression (HPACK)

5. Outils de mesure

Outil Type Usage
Lighthouse Lab data Audit complet en dev
PageSpeed Insights Lab + Field Données réelles CrUX
WebPageTest Lab data Analyse détaillée
Chrome DevTools Lab data Performance timeline
web-vitals (npm) RUM Monitoring en prod

Checklist performance

  • Images en WebP/AVIF avec dimensions explicites
  • Preload des ressources critiques (LCP image, fonts)
  • Lazy loading pour le contenu below-the-fold
  • JavaScript minifié et tree-shaken
  • CSS critique inline, reste en async
  • Compression Brotli activée
  • CDN configuré avec cache long
  • Monitoring RUM en production

Conclusion

La performance web n'est pas une option en 2025. Chaque milliseconde compte pour l'expérience utilisateur et le SEO. Utilisez les outils de mesure, suivez cette checklist, et itérez. Un site rapide = des utilisateurs heureux = un business qui prospère.