back to top

Web Performance: introduzione ai Core Web Vitals 2025

1. Introduzione

Cos’è la Web Performance e perché è cruciale nel 2025

La Web Performance è l’insieme delle tecniche e delle metodologie volte a rendere un sito web veloce, reattivo e fruibile su tutte le tipologie di dispositivi e connessioni. Nel 2025, questa disciplina si è evoluta ulteriormente poiché gli utenti si aspettano esperienze online quasi istantanee e Google (così come altri motori di ricerca) ha reso le prestazioni un fattore di ranking ancora più incisivo.

La velocità di caricamento di una pagina influisce in modo diretto sulla User Experience (UX): una pagina lenta porta a un tasso di abbandono elevato, mentre una pagina reattiva incoraggia l’utente a interagire e a rimanere più a lungo. In parallelo, la SEO (Search Engine Optimization) tiene in grande considerazione la velocità di caricamento e la stabilità del layout, premiando i siti ottimizzati con un posizionamento migliore.

Il panorama del frontend è sempre più vasto, con framework come React, Vue, Angular e librerie JavaScript sempre più complesse. Aumentano le funzionalità, ma crescono anche le sfide: script pesanti, immagini in alta definizione e risorse che, se non gestite correttamente, rallentano la navigazione.

L’importanza dei Core Web Vitals per l’ottimizzazione SEO e UX

Proprio per rispondere alle esigenze degli utenti e premiare i siti più performanti, Google ha introdotto e aggiornato i Core Web Vitals. Si tratta di metriche fondamentali, studiate per misurare in modo oggettivo l’esperienza utente su un sito web. Nel 2025, queste metriche si concentrano su tre aspetti chiave: la velocità di caricamento (Largest Contentful Paint), la stabilità visiva (Cumulative Layout Shift) e l’interattività (Interaction to Next Paint).

I Core Web Vitals sono fondamentali non solo per posizionarsi meglio sui motori di ricerca, ma anche per garantire un’esperienza d’uso fluida e piacevole. Migliorando questi parametri, ci si assicura di soddisfare le aspettative degli utenti e di ridurre i possibili ostacoli (come layout che saltano o pulsanti che rispondono in ritardo). In definitiva, ottimizzare i Core Web Vitals significa lavorare sia sul SEO che sulla UX, un binomio vincente per ogni progetto web di successo.


2. Cosa sono i Core Web Vitals

Definizione e significato delle metriche principali

I Core Web Vitals sono metriche definite da Google per valutare la qualità dell’esperienza utente su un sito web. L’idea di base è fornire un set di indicatori che misurino aspetti cruciali:

  1. La velocità di rendering iniziale del contenuto principale.
  2. La stabilità del layout durante il caricamento.
  3. La reattività alle interazioni dell’utente.

Questi parametri consentono di capire se il nostro sito è fruibile e piacevole da navigare o se, al contrario, ha problemi di lentezza e scarsa usabilità.

Panoramica sulle metriche aggiornate al 2025

Alcune metriche storiche, come il First Input Delay (FID), hanno subito cambiamenti di definizione e importanza. Nel 2025, i Core Web Vitals si concentrano principalmente su:

  • Largest Contentful Paint (LCP): misura il tempo impiegato per rendere visibile l’elemento più grande (spesso un’immagine o un blocco di testo) nella finestra di visualizzazione.
  • Cumulative Layout Shift (CLS): valuta la stabilità dell’interfaccia, controllando se gli elementi della pagina si spostano in modo imprevisto durante il caricamento.
  • Interaction to Next Paint (INP): definisce quanto un sito sia reattivo all’interazione, misurando il tempo che intercorre tra l’interazione dell’utente e la conseguente reazione visiva.

Nelle sezioni successive, vedremo come misurare ognuna di queste metriche e soprattutto come migliorarle con tecniche concrete di ottimizzazione.


3. Analisi delle metriche principali

3.1 Largest Contentful Paint (LCP)

Cosa misura

Il Largest Contentful Paint (LCP) indica quanto tempo passa prima che l’elemento più grande della pagina diventi visibile all’utente. In pratica, si tratta di un’immagine o di un blocco testuale (ad esempio, un titolo H1 o una sezione “hero”) che rappresenta il contenuto principale.

  • Obiettivo di riferimento: per offrire una buona esperienza, il LCP dovrebbe verificarsi entro i primi 2,5 secondi dalla richiesta della pagina.

Come migliorarlo

Per ottimizzare il LCP, bisogna intervenire su ciò che più influisce sul caricamento iniziale, soprattutto:

  1. Ottimizzazione delle immagini
    • Utilizzare formati moderni (come WebP o AVIF) e ridurre il peso senza comprometterne la qualità.
    • Impostare l’attributo width e height o utilizzare tecniche avanzate come picture e srcset per caricare la versione ottimale dell’immagine in base al dispositivo.
    • Abilitare la funzionalità di lazy-loading per le immagini non direttamente visibili nell’area iniziale della pagina.
  2. CDN (Content Delivery Network)
    • Utilizzare una CDN aiuta a distribuire i contenuti su server geograficamente più vicini all’utente, riducendo la latenza.
    • Alcuni CDN permettono anche image optimization automatica, riducendo ulteriormente i tempi di caricamento.
  3. Preload delle risorse critiche
    • Se l’elemento LCP è un’immagine o un font essenziale, utilizzare il tag <link rel="preload" href="..." as="image"> (o as="font" per i font) in modo che il browser scarichi la risorsa in anticipo.
    • Attenzione a non abusare del preload, perché caricare troppe risorse in anticipo può rallentare altre parti del sito.
  4. Riduzione delle risorse blocco-render
    • File CSS o JavaScript pesanti che impediscono la visualizzazione rapida possono ritardare il LCP. Minimizzare e concatenare i file CSS è un buon inizio.
    • Per i file JavaScript, si possono adottare caricamenti asincroni (async) o differiti (defer) laddove possibile.

Esempio di HTML con preload di un’immagine:

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Esempio Preload Immagine</title>
  <!-- Preload dell'immagine principale per migliorare LCP -->
  <link rel="preload" href="hero-image.webp" as="image">
</head>
<body>
  <section class="hero">
    <img src="hero-image.webp" alt="Immagine hero" width="1200" height="600">
  </section>
</body>
</html>

3.2 Cumulative Layout Shift (CLS)

Cosa rappresenta

Il Cumulative Layout Shift (CLS) misura la somma di tutti gli spostamenti di layout imprevisti che avvengono durante il caricamento di una pagina. Ti sarà capitato di voler cliccare un pulsante, ma improvvisamente la pagina “salta” e clicchi un altro elemento per sbaglio. Questo è un tipico sintomo di un alto CLS.

  • Obiettivo di riferimento: mantenere un CLS al di sotto di 0,1 garantisce un’esperienza utente stabile e priva di fastidiose variazioni.

Come prevenirlo

Per ridurre al minimo il CLS occorre:

  1. Dimensioni definite per immagini e video
    • Assegnare sempre width e height alle immagini, in modo che il browser riservi lo spazio corretto.
    • Per i video incorporati (ad esempio da YouTube), è consigliato adottare un wrapper con proporzioni fisse in CSS.
  2. Caricamento asincrono di font
    • Se un font web tardivo provoca il cambio di stile del testo, considerare il font-display (ad esempio, font-display: swap;) per evitare salti di layout o l’utilizzo di un fallback.
    • Per approfondire l’uso avanzato dei font e la gestione del layout, consulta la nostra Guida CSS Avanzato 2025: Layout, Animazioni e Best Practice.
  3. Evitare l’inserimento dinamico di contenuti sopra a quelli già renderizzati
    • Se devi caricare annunci o contenuti inseriti dinamicamente, assicurati di riservare uno spazio predefinito all’interno del layout.
    • In questo modo, l’utente non avrà scossoni grafici mentre naviga.
  4. Attenzione ai banner e alle notifiche
    • Elementi come cookie banner o notifiche push possono spostare il contenuto se non gestiti correttamente. Occorre inserirli con dimensioni fisse o farli apparire sopra (overlay) senza influire sul layout esistente.

3.3 Interaction to Next Paint (INP)

Cosa indica

La metrica Interaction to Next Paint (INP) valuta la reattività del sito, misurando il tempo che passa tra l’interazione dell’utente (ad esempio un click su un pulsante) e il momento in cui la pagina mostra il risultato visivo di quell’interazione.

  • Obiettivo di riferimento: un buon INP dovrebbe essere inferiore a 200 ms, in modo che l’utente percepisca istantaneamente l’effetto delle proprie azioni.

Come ottimizzare l’interattività

Per migliorare l’INP si agisce principalmente sul main thread di JavaScript, evitando che operazioni complesse blocchino l’interfaccia:

  1. Ridurre il carico del main thread
  2. Evita eccessivo reflow
    • Modificare spesso il DOM o le proprietà che causano reflow (come width, height, padding, ecc.) può rallentare la risposta all’utente.
    • Integra i cambiamenti al layout in un singolo batch.
  3. Carica script in maniera asincrona
    • Utilizzare async o defer per i file JavaScript non critici, in modo da non bloccare il caricamento della pagina.
    • Prevedere un caricamento condizionato soltanto quando necessario.
  4. Utilizza meccanismi di prefetch e preconnect
    • Se sai che l’utente potrebbe navigare su un’altra pagina, puoi usare <link rel="prefetch" href="..."> per caricarla in anticipo.
    • preconnect consente di stabilire connessioni a domini esterni (ad esempio le fonti di script) riducendo i tempi di attesa.

4. Strumenti per la misurazione delle performance

Utilizzare Lighthouse per un’analisi completa

Lighthouse è un tool integrato in Chrome DevTools che permette di eseguire un audit completo su Performance, Accessibilità e altre best practice. Una volta aperto il sito in Chrome, puoi lanciare Lighthouse:

  1. Apri DevTools (tasto destro > Ispeziona o Ctrl+Shift+I).
  2. Vai nella sezione Lighthouse.
  3. Seleziona le voci di audit (Performance, Accessibility, Best Practices, SEO).
  4. Avvia l’analisi.

Al termine, Lighthouse ti fornirà un punteggio e suggerimenti su come migliorare parametri come LCP, CLS e INP.

PageSpeed Insights: interpretare i risultati

PageSpeed Insights è lo strumento di Google accessibile via web (ricerca “PageSpeed Insights su Google”) che fornisce un report di performance sia per mobile che per desktop. Ti dà:

  • Dati di laboratorio: simili a quelli di Lighthouse.
  • Dati sul campo: se disponibili, derivati dall’esperienza reale degli utenti (Chrome User Experience Report).

Per interpretare i risultati, focalizzati sulle voci “Opportunità” e “Diagnostica”:

  • Se hai indicazioni su ridurre la dimensione delle immagini o rimuovere risorse blocco-render, prendi seriamente questi consigli e implementali.
  • Potrebbe anche segnalare miglioramenti al tuo codice HTML/CSS/JS e offrire link di approfondimento.

Web Vitals Extension: monitoraggio in tempo reale

Google mette a disposizione un’estensione per Chrome chiamata Web Vitals Extension, che mostra in tempo reale i valori di LCP, CLS e INP mentre navighi. È utile per diagnosticare problemi di performance sulle singole pagine, senza dover lanciare un audit completo con Lighthouse.

  • Puoi installarla dal Chrome Web Store.
  • Una volta attivata, ti mostrerà i valori delle metriche nella barra degli strumenti. Se uno dei valori sfora le soglie raccomandate, lo vedrai immediatamente.

5. Esempio pratico

In questa sezione, vediamo un esempio di ottimizzazione combinato. Immaginiamo di avere un sito con un hero banner in alto, alcuni blocchi di testo, un paio di sezioni di contenuto multimediale e diversi script JS per interazioni e animazioni.

5.1 Migliorare il LCP con immagini ottimizzate

Supponiamo che l’elemento LCP sia l’immagine “hero.jpg” molto pesante. Ecco come procedere:

  1. Conversione in formato WebP
    • Se l’immagine originale pesa 300 KB in JPEG, in formato WebP potrebbe scendere a 150 KB o meno, senza perdere qualità visibile.
    • Utilizza un software di conversione o plugin WordPress dedicati.
  2. Impostazione di picture e srcset
  3. Preload dell’immagine principale
    • Nel <head>, aggiungi: htmlCopiaModifica<link rel="preload" href="hero.webp" as="image">
    • Così facendo, il browser scarica l’immagine il prima possibile, velocizzandone la visualizzazione.

5.2 Evitare il CLS con layout stabili

Il layout della pagina può subire spostamenti se dimentichiamo di definire le dimensioni per immagini e contenitori. Inoltre, caricando font personalizzati in ritardo, rischiamo che il testo salti:

  1. Dimensioni fisse per immagini <img src="hero.webp" alt="Hero immagine" width="1200" height="600"> Questo assicura che lo spazio sia riservato prima che l’immagine venga scaricata.
  2. Caricamento asincrono del font con font-display
    Nel tuo CSS:@font-face { font-family: 'MyCustomFont'; src: url('mycustomfont.woff2') format('woff2'); font-display: swap; } In tal modo, se il font tarda, verrà mostrato un fallback provvisorio.
  3. Prevenire l’inserimento dinamico di banner
    Se prevedi di mostrare un banner pubblicitario o un popup, riserva in anticipo un’area fissa nel layout (ad esempio in CSS col min-height). Così facendo, quando l’elemento apparirà, non farà “saltare” il layout.

5.3 Ridurre l’INP con ottimizzazione del JavaScript asincrono

Ora ipotizziamo di avere un file main.js molto pesante che contiene funzionalità complesse e animazioni:

  1. Separare funzioni critiche da quelle non critiche
    • Caricare le funzioni strettamente necessarie al caricamento iniziale direttamente nel <head> o con defer.
    • Funzionalità secondarie (come analytics e tracking) possono essere caricate con async o addirittura in fase successiva.
  2. Utilizzare un Web Worker
    • Se la tua applicazione effettua calcoli intensivi, spostali in un Web Worker.
    • In questo modo, il main thread rimane libero di gestire l’interazione con l’utente.
  3. Controllo degli eventi di input
    • Se noti rallentamenti nel tocco/click, potrebbe dipendere da listener di eventi troppo pesanti o dalla manipolazione del DOM non ottimizzata.
    • Ottimizza i listener ed evita ridondanze nel codice.
  4. Richiamare librerie esterne da CDN affidabili
    • Se usi React, Vue o altre librerie, collegati a un CDN performante, preferibilmente con preconnect (esempio: <link rel="preconnect" href="https://example-cdn.com">).
    • Così riduci latenza e carichi più in fretta la libreria.

Un esempio di caricamento JavaScript ottimizzato nel file HTML:

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Riduzione INP</title>
  <!-- Script critico differito, ma essenziale per l'interattività -->
  <script defer src="js/critical.js"></script>
</head>
<body>
  <h1>Benvenuto sul nostro sito</h1>
  <!-- Contenuto della pagina -->

  <!-- Script non essenziale in async -->
  <script async src="js/non-essential.js"></script>
</body>
</html>


6. Conclusione

Riepilogo dei concetti chiave

Nel 2025, i Core Web Vitals (LCP, CLS, INP) rappresentano lo standard per valutare la Web Performance. Abbiamo visto come:

  • LCP influisce sulla percezione della velocità di caricamento.
  • CLS garantisce la stabilità del layout, evitando salti fastidiosi.
  • INP valuta la reattività del sito all’interazione dell’utente.

Per ottenere buoni risultati, occorre combinare varie tecniche di ottimizzazione: immagini leggere, caricamento asincrono di risorse, definizione di dimensioni per i media, buon uso del CSS e del JavaScript, e adozione di strumenti di analisi come Lighthouse e PageSpeed Insights.

Per approfondire altri aspetti dell’ottimizzazione frontend, ti consigliamo di leggere i nostri articoli correlati su CyberAlchimista:

Ti è piaciuto questo articolo? Condividilo sui tuoi canali social e contribuisci a diffondere la cultura della Web Performance! Se hai domande o esperienze da raccontare: la community di sviluppatori su CyberAlchimista è sempre attenta e pronta a confrontarsi.

Condividi

Articoli Recenti

Categorie popolari