INP su WordPress: La Nuova Metrica Core Web Vitals e Come Ottimizzarla

18 aprile 20263 minPerformance
In breveAI

Ottimizza la tua esperienza utente su WordPress migliorando la metrica INP (Interaction to Next Paint), che misura il tempo di risposta della pagina dopo un'interazione dell'utente. La cache non è sufficiente a risolvere questo problema, poiché è un problema lato client legato a JavaScript. Scopri come diagnosticare e risolvere gli issue di INP per migliorare la velocità e l'esperienza del tuo sito web.

INP su WordPress: La Metrica che Nessun Plugin di Cache Può Risolvere

INP (Interaction to Next Paint) ha sostituito FID come Core Web Vital nel marzo 2024. Misura quanto tempo passa tra il click dell’utente e l’aggiornamento visivo della pagina. La soglia: 200ms o meno.

La cache non aiuta qui. INP è un problema lato client, non lato server. Il tuo TTFB può essere 10ms e il tuo INP 800ms. Perché? JavaScript.

Perché WordPress Ha Problemi di INP

WordPress carica mediamente 15-25 file JavaScript nel frontend. Ogni file può contenere event handler che si attivano al click. Se un handler blocca il main thread per 300ms, l’INP è 300ms. Fallito.

I colpevoli ricorrenti:

Colpevole Impatto INP tipico Fix
jQuery + jQuery Migrate +50-100ms Rimuovi jQuery Migrate
Elementor frontend JS +100-300ms Disabilita feature non usate
Google Analytics (gtag.js) +30-50ms Carica async, usa Partytown
Facebook Pixel +50-100ms Carica defer, o server-side
Slider (Slick, Swiper) +100-200ms Rimuovi slider su mobile
Chat widget (Crisp, Tawk) +50-150ms Carica solo dopo interazione

Come Diagnosticare INP

// Chrome DevTools → Performance → Registra un'interazione
// Cerca i "Long Tasks" (barre rosse) > 50ms durante il click

// O usa la Web Vitals library
import {onINP} from 'web-vitals';
onINP(({value, entries}) => {
    console.log('INP:', value, 'ms');
    console.log('Target:', entries[0].target);
});

I 5 Fix Più Efficaci

1. Rimuovi jQuery Migrate

add_action('wp_default_scripts', function($scripts) {
    if (!is_admin()) {
        $scripts->remove('jquery');
        $scripts->add('jquery', false, ['jquery-core']);
    }
});

2. Defer tutti i tracking script

add_filter('script_loader_tag', function($tag, $handle) {
    $defer = ['google-analytics', 'facebook-pixel', 'hotjar'];
    if (in_array($handle, $defer)) return str_replace(' src=', ' defer src=', $tag);
    return $tag;
}, 10, 2);

3. Lazy load i widget pesanti

Carica chat widget, social widget, commenti Disqus solo quando l’utente scrolla verso di loro o clicca un trigger.

4. Usa CSS per le animazioni, non JS

Le animazioni CSS con transform e opacity non bloccano il main thread. Le animazioni jQuery/JS sì.

5. Code splitting del page builder

Elementor carica tutto il suo JS anche se la pagina usa solo 2 widget. Usa “Improved Asset Loading” (Elementor → Settings → Performance) per caricare solo il JS dei widget usati.

FAQ

Il mio INP è alto solo su mobile. Perché?

I processori mobile sono 3-5x più lenti dei desktop. Un JavaScript che gira in 50ms su desktop gira in 150-250ms su un telefono medio. Testa sempre su un dispositivo reale mid-range, non sul tuo iPhone 15.

INP è più difficile da risolvere di LCP?

Sì. LCP si risolve con cache + immagini ottimizzate (server-side). INP richiede di modificare o rimuovere JavaScript lato client, il che spesso significa cambiare plugin o tema. È più invasivo.

Gestisci i siti WordPress dei tuoi clienti?

AgencyPilot ti dà report AI, uptime monitoring, backup e portale clienti in un’unica dashboard. Gratis per 3 siti.

Prova gratis
Leggi anche
Tutti gli articoli
Tutti gli articoli