Ottimizzare CSS e JavaScript di WordPress

Perché ottimizzare CSS e JavaScript in WordPress

CSS e JavaScript sono i linguaggi che danno forma e interattività a un sito WordPress, ma se non gestiti correttamente diventano la causa principale di lentezza. Un sito WordPress medio carica tra 15 e 40 file tra CSS e JS, per un peso totale che spesso supera 1 MB. Ogni file rappresenta una richiesta HTTP aggiuntiva e un blocco potenziale per il rendering della pagina.

Ottimizzare questi file significa ridurre il tempo di caricamento percepito dall’utente, migliorare i Core Web Vitals, aumentare il punteggio nei motori di ricerca e ridurre il carico sul server. In questa guida vediamo tutte le tecniche, dalla minificazione al caricamento asincrono, fino alle strategie avanzate con caching plugin.

Minificazione: rimuovere il superfluo

La minificazione rimuove spazi bianchi, commenti, ritorni a capo e caratteri non necessari dal codice sorgente, riducendo la dimensione dei file del 30-60% senza alterarne la funzionalità. Un file CSS di 100 KB può diventare 40 KB dopo la minificazione.

Esistono tre modi per minificare CSS e JS in WordPress:

  • Plugin caching come WP Rocket o Autoptimize includono la minificazione automatica
  • Task runner come Grunt, Gulp o webpack durante lo sviluppo
  • Servizi online come Minifier.org o CSSNano per minificazione manuale

La minificazione automatica via plugin è la soluzione più pratica per la maggior parte degli utenti. WP Rocket e Autoptimize offrono opzioni per escludere file specifici dalla minificazione in caso di conflitti.

Attenzione ai warning: alcuni plugin o temi potrebbero non funzionare correttamente dopo la minificazione. In tal caso, aggiungi i file problematici alla lista di esclusione del plugin.

Concatenazione: unire per ridurre le richieste

La concatenazione combina più file CSS o JS in un unico file, riducendo drasticamente il numero di richieste HTTP. Invece di caricare 10 file CSS separati, ne carichi uno solo. HTTP/2 ha ridotto l’importanza della concatenazione grazie al multiplexing, ma unire file molto piccoli (sotto i 2 KB) rimane vantaggioso.

I plugin di caching offrono la concatenazione automatica. WP Rocket la chiama “Combine CSS files” e “Combine JavaScript files”. Autoptimize la gestisce nella stessa sezione della minificazione.

Anche in questo caso, attenzione ai conflitti: file concatenati in ordine sbagliato possono rompere il layout o le funzionalità. Verifica sempre il sito dopo aver attivato la concatenazione.

Caricamento differito: defer e async

Gli attributi defer e async modificano il comportamento di caricamento degli script, permettendo al browser di continuare a scaricare e rendere la pagina mentre lo script viene caricato.

  • async: lo script viene scaricato in parallelo al HTML e eseguito immediatamente dopo il download, indipendentemente dall’ordine di caricamento. Adatto per script indipendenti come analytics.
  • defer: lo script viene scaricato in parallelo ma eseguito solo dopo che l’HTML è stato completamente analizzato, rispettando l’ordine di caricamento. Adatto per script che dipendono dal DOM.

In WordPress, puoi aggiungere defer o async a script specifici usando wp_script_add_data() nel functions.php. Plugin come WP Rocket e Autoptimize permettono di impostare defer su tutti gli script con un click.

Critical CSS: ottimizzare il contenuto above-the-fold

Il Critical CSS è la porzione di CSS necessaria a rendere il contenuto visibile nella finestra del browser prima dello scroll. Estrarre e inlineare questo CSS elimina i render-blocking request e migliora il First Contentful Paint (FCP) e il Largest Contentful Paint (LCP).

La tecnica prevede:

  1. Identificare i CSS necessari per la parte visibile della pagina
  2. Includerli direttamente nel tag <head> del documento HTML
  3. Caricare il CSS completo in modo asincrono con media=”print” o con JavaScript

WP Rocket genera automaticamente il Critical CSS per pagine, post, prodotti WooCommerce e pagine archivio. In alternativa, usa strumenti come Critical (npm) o l’API di Penthouse per generarlo manualmente.

Eliminare le risorse render-blocking

Una risorsa render-blocking impedisce al browser di visualizzare contenuti fino a quando non è stata scaricata e processata. CSS esterni e JavaScript non asincroni sono le risorse render-blocking più comuni.

Per eliminarle:

  • Inlina il Critical CSS nel <head>
  • Carica i CSS non critici con media=”print” o async
  • Usa defer o async per tutti gli script JavaScript non essenziali
  • Posticipa il caricamento di script di terze parti (font, widget, analytics)

PageSpeed Insights e Lighthouse mostrano esattamente quali risorse bloccano il rendering. Usa queste informazioni per decidere cosa ottimizzare.

Plugin di caching: WP Rocket e Autoptimize

WP Rocket

WP Rocket è il plugin di caching premium più diffuso per WordPress. Offre minificazione, concatenazione, caricamento differito, Critical CSS, lazy loading e caching della pagina con un’interfaccia semplice. Le impostazioni di ottimizzazione dei file si trovano nella scheda “File Optimization”. Attiva “Minify CSS/JS”, “Combine CSS/JS”, “Load JS deferred” e genera il Critical CSS con un click.

Autoptimize

Autoptimize è un’alternativa gratuita altrettanto potente. Dopo l’attivazione, vai su Impostazioni > Autoptimize. Attiva “Optimize CSS Code”, “Optimize JavaScript Code” e nelle opzioni avanzate scegli “Aggregate CSS/JS files” e “Apply defer to JS”. Autoptimize supporta anche Critical CSS tramite un add-on premium separato.

Ottimizzazione manuale con functions.php

Per chi preferisce il controllo manuale, puoi ottimizzare CSS e JS direttamente dal file functions.php del tema. Ecco alcune azioni comuni:

  • Rimuovere script e stili non necessari con wp_dequeue_script() e wp_dequeue_style()
  • Aggiungere defer a script specifici con wp_script_add_data()
  • Spostare script dal header al footer con una prioritizzazione personalizzata
  • Disabilitare block library CSS (wp-block-library) se non usi Gutenberg
  • Rimuovere emoji e embed script se non necessari

Usa Query Monitor per identificare esattamente quali handle di script e stili vengono caricati su ogni pagina, così da rimuovere solo quelli superflui.

Misurare i miglioramenti con Lighthouse e PageSpeed Insights

Ogni ottimizzazione deve essere verificata con strumenti di misurazione oggettivi. Usa Google PageSpeed Insights e Lighthouse (integrato in Chrome DevTools) per confrontare i punteggi prima e dopo le modifiche.

Metriche chiave da monitorare:

  • First Contentful Paint (FCP): tempo al primo contenuto visibile
  • Largest Contentful Paint (LCP): tempo al contenuto principale
  • Total Blocking Time (TBT): tempo bloccato da script lunghi
  • Speed Index: velocità percepita di caricamento

Esegui almeno tre test in momenti diversi e prendi la mediana, per evitare misurazioni influenzate da variazioni temporanee del server o della rete.

Conclusione

Ottimizzare CSS e JavaScript è uno degli investimenti più redditizi per la velocità di un sito WordPress. Minificazione, concatenazione, defer, async e Critical CSS sono tecniche collaudate che qualsiasi sito può adottare, indipendentemente dal tema o dai plugin usati. Inizia con un plugin caching, misura i risultati e affina la configurazione escludendo i file che causano conflitti. Il tuo sito sarà più veloce, i tuoi visitatori più soddisfatti e Google ti premierà con posizioni migliori.

Lascia una risposta