Avere un sito wordpress lento รจ perรฒ una problematica comune.
Ecco il punteggio mobile per una delle mie pagine dal PageSpeed Insights.
Scansionando lโintero sito con il Site Audit di Ahrefsโil quale mostra il tempo di caricamento per tutte le pagineโnotiamo che non si tratta di certo dellโunica ad essere lenta. Nessuna si carica infatti in maniera particolarmente veloce, con un tempo medio pari a 570ms.
Ora ecco la stessa pagina dopo 20 minuti di ottimizzazioni:
Ed il resto delle pagine come viste nel Site Audit:
La differenza รจ come fra la notte e il giorno. Il punteggio del PageSpeed ora รจ quasi perfetto, ed ogni singola pagina si carica piuttosto velocemente.
In questa guida ti mostrerรฒ esattamente come ho ottenuto questo risultato in pochi e semplici passi.
- Rimuovi i plugin inutilizzati
- Cambia i DNS a favore di quelli di Cloudfare
- Installa un plugin di caching
- Minifica il codice
- Combina i file CSS e Javascript
- Elimina le risorse che bloccano il rendering della pagina
- Applica il Lazy Load a immagini e video
- Ottimizza i Google Fonts
- Abilita il preloading
- Utilizza una CDN
- Ottimizza le immagini
La maggior parte delle ottimizzazioni mostrate in questa guida utilizzano WPRocket, un plugin a pagamento per velocizzare i siti WordPress. Ho inserito delle alternative gratuite dove possibile, ma รจ importante sottolineare che i plugin possono talvolta entrare in conflitto fra di loro e causare problemi. Dovresti sempre testare il modo in cui i cambiamenti si riflettono sul tuo sito in un ambiente di staging prima di implementare delle modifiche. Puoi imparare come settare un ambiente di staging qui.
A meno che tu non abbia un sito WordPress nuovo di zecca, รจ molto probabile che tu abbia dei plugin che non utilizzi piรน. Alcuni di questi possono impattare sulla velocitร di caricamento; vale quindi la pena disattivarli e rimuoverli in quanto probabilmente non ne hai bisogno.
Presta attenzione mentre svolgi questa operazione. Se non sei certo che un plugin sia necessario o meno al corretto funzionamento del sito, lascialo lรฌ.
I siti web non sono altro che un insieme di file su di un hard disk (server) connessi ad internet. E ogni dispositivo connesso alla rete ha un indirizzo IP (ad esempio 123.123.12.1).
Dato che gli indirizzi IP sono difficili da memorizzare, i nomi di dominio sono applicati a tali indirizzi attraverso i DNS, sigla che sta per Domain Name System. Puoi considerarli come delle pagine bianche del web. Quando inserisci il nome di un dominio allโinterno del tuo browser, il provider dei DNS identifica e trova lโindirizzo IP corrispondente del server al quale vuoi connetterti (questo processo prende il nome di DNS lookup).
Ma ecco il problema: la maggior parte delle persone utilizza i DNS gratuiti messi a disposizione del proprio register, ovvero lโazienda presso la quale รจ registrato il dominio, e questi sono solitamente molto lenti.
Se questo รจ anche il tuo caso, puoi cambiare i DNS a favore di alcuni piรน veloci, come quelli messi a disposizione da Cloudfare.
Per farlo, devi registrare un account gratuito su Cloudfare. Clicca poi su โAdd a siteโ, inserisci il tuo nome di dominio e clicca poi sul pulsante per proseguire.
Seleziona il piano gratuito e clicca poi su โConfirm Planโ.
Cloudfare ti darร ora la possibilitร di rivedere le impostazioni relative ai DNS prima di procedere. Se non ci sono avvisi particolari, รจ solitamente sicuro proseguire.
Ora tutto quello che รจ rimasto da fare รจ cambiare i nameserver allโinterno del pannello di controllo del register del tuo dominio. Questa procedura cambia a seconda dellโazienda presso la quale hai registrato il dominio e non esitare a contattare il loro supporto tecnico se non sei sicuro di come fare.
Ecco il processo utilizzando Google Domains:
Il caching รจ un processo che memorizza dei file in modo che possano essere serviti ai visitatori in maniera piรน rapida ed efficiente.
Ne esistono due varianti principali:
- Browser caching: Memorizza i file โcomuniโ come i loghi sullโhard disk del visitatore, in modo che questโultimo non debba scaricalo ogni volta che visita la pagina o il sito.
- Server caching: Salva unโintera copia โstaticaโ e funzionante della tua pagina sul server, in modo che questa non debba essere rigenerata ogni volta che un visitatore la richiede.
WP Rocket rende semplice abilitare il caching. Basta acquistarlo, installarlo e attivare lโopzione prevista. Il caching di base (server e browser) รจ attivo di default. Se il tuo sito รจ responsive, vai nelle impostazioni di caching e spunta la box per abilitare il caching per i dispositivi mobili.
Cerchi unโalternativa gratuita? Prova W3 Total Cache.
La minificazione rimuove gli spazi bianchi ed i commenti dal codice per ridurne le dimensioni. Di conseguenza file piรน piccoli permettono caricamenti piรน rapidi.
Se utilizzi WPRocket, puoi spuntare le apposite box per minificare CSS e Javascript allโinterno delle impostazioni.
Se invece non utilizzi WPRocket, installa e attiva un plugin chiamato Autoptimize che fa la stessa cosa.
Come sempre, prima di attivare lโopzione, testala per vedere come impatta sul tuo sito. La minificazione infatti puรฒ talvolta causare problemi e โrompereโ il codice, specialmente nel caso di Javascript.
La maggior parte dei siti WordPress รจ composta da diversi file CSS e Javascript. Alcuni sono parte del tema, altri di plugin e altri ancora potrebbero essere dei file personalizzati.
Combinare questi file fra di loro, puรฒ aiutare a velocizzare il caricamento del sito, ma molto dipende dal setup del tuo server.
- Con HTTP/1.1, i file CSS e Javascript si caricano uno dietro lโaltro. Questo significa che un prima di passare al file successivo, quello precedente deve essere completamente caricato.
- Con HTTP/2, i file si caricano in maniera sincrona. Questo significa che diversi file CSS e Javascript vengono caricati nello stesso momento.
Se il tuo server utilizza HTTP/1.1, combinare i file puรฒ velocizzare le cose perchรฉ il numero di file da caricare si riduce. Al contrario, se utilizza HTTP/2, la differenza non sarร cosรฌ evidente perchรจ piรน file possono essere caricati in contemporanea.
Per verificare qual รจ la versione usata dal tuo sito, puoi provare il Key CDNโs tester.
Se il supporto ad HTTP/2 non รจ presente, combina pure i file CSS e Javascript fra di loro.
Per farlo in WPRocket, spunta le caselle chiamate โCombine JavaScript filesโ e โCombine CSS filesโ allโinterno delle impostazioni.
Se utilizzi Autoptimize ci sono due caselle di controllo per โaggregareโ i file. Anche in questo caso talvolta possono verificarsi dei malfunzionamenti sul sito ed รจ quindi meglio testare la modifica assicurandosi che tutto sia funzionante una volta abilitata lโopzione. Ricordati inoltre di cancellare la cache prima di verificare i cambiamenti applicati con una scheda in incognito. In caso contrario le modifiche potrebbero non essere immediatamente visibili.
Il rendering รจ il processo nel quale il codice viene reso una pagina web visibile e navigabile.
La parola chiave in questo caso รจ โvisibileโ in quanto una pagina non deve essere completamente carica prima che sia, per lโappunto, visibile.
Per questo motivo ha senso dare prioritร di caricamento a quelle risorse necessarie per visualizzare il contenuto cosiddetto โabove the foldโ (ovvero visibile prima dello scroll).
Per fare questo devi ritardare il caricamento delle risorse CSS e Javascript necessarie al contenuto โbelow the foldโ (ovvero nella parte della pagina non visibile previo scroll). Per farlo in WPRocket, spunta le casella chiamate โLoad JavaScript deferredโ e โOptimize CSS deliveryโ.
Se non utilizzi WPRocket hai necessitร di due plugin: Autoptimize e Async JavaScript.
Nelle impostazioni di Autoptimize spunta la casella chiamata โInline and Defer CSSโ. Nelle impostazioni di Async JavaScript, invece, spunta โEnable Async JavaScriptโ.
Se allโinterno di PageSpeed Insights avevi una segnalazione relativa a โElimina le risorse di blocco della visualizzazioneโ, questa procedura dovrebbe risolvere il problema.
Il Lazy Load migliora la velocitร di caricamento delle pagine ritardando il caricamento delle immagini e dei video finchรฉ non sono visibili sullo schermo. Se utilizzi WordPress 5โ5+, il lazy loading delle immagini รจ attivo di default, ma non quello per i video.
Con WPRocket, per ovviare al problema, puoi attivare la voce chiamata โEnable for iframes and videosโ allโinterno delle impostazioni LazyLoad.
Se non utilizzi invece WPRocket, puoi installare il plugin gratuito chiamato Lazy Load for Videos.
Molti temi utilizzano i Google Font e questi devono essere scaricati dal server di Google ogni qualvolta che qualcuno visita il tuo sito. Questo processo puรฒ rallentare il caricamento, in quanto il sito deve inviare delle richieste, scaricare un file CSS, ed in seguito anche il font necessario. E questo succede per ogni singolo font presente sulla pagina.
WPRocket ottimizza le richieste Google Font in maniera automatica. In alternativa puoi usare Swap Google Fonts Display.
Il preloading ti aiuta a prioritizzare le risorse essenziali, dando modo ai browser di capire quali caricare prima.
Per fare un esempio, poniamo il caso che questo sia il codice della tua pagina:
<html> <head> <script type=โtext/javascriptโ src=โsomefile.jsโ></script> <link rel=โstylesheetโ href=โ/style.cssโ> </head> <body> Content </body> </html>
In base a questo codice,il file Javascript sarร caricato per primo, in quanto cโรจ una gerarchia prestabilita.Questo non รจ ideale, in quanto il CSS ha probabilmente una funzione piรน critica.
Il modo piรน semplice per risolvere questo problema รจ aggiungere una linea di codice, come segue:
<link rel="preload" href="/style.css" as="style">
Questo dice al browser di dare prioritร al CSS rispetto al Javascript, indipendentemente dalla gerarchia.
Anche se puoi precaricare le richieste aggiungendo il codice manualmente, si tratta di un processo laborioso e che puรฒ creare confusione. ร molto piรน semplice installare WPRocket che si prende cura di questo aspetto in maniera automatica.
Le Content Delivery Network (CDN) sono un gruppo di server distribuito su vari luoghi in tutto il mondo. Ognuno di questi salva una copia del tuo sito, in modo che sia piรน veloce per un utente accedervi quando viene richiesta una pagina.
Ad esempio, facciamo finta che il server del tuo sito si trovi nel Regno Unito. Se qualcuno visita il sito dagli Stati Uniti e non utilizzi una CDN, la connessione fra il dispositivo del visitatore ed il tuo server sarร lenta. Se invece utilizzi una CDN, il dispositivo dellโutente proveniente dagli Stati Uniti si connetterร al server piรน vicino, velocizzando il processo.
Esistono molti provider di CDN, quindi lโunica cosa che devi fare รจ sceglierne uno, abilitare lโapposita opzione in WPRocket ed inserire il relativo CNAME.
Il Lazy Load risolve indubbiamente molti problemi, ma non fa nulla per la immagini che si trovano above the fold. Piรน grandi queste sono, piรน impattanno negativamente sui tempi di caricamento.
Per eliminare il problema, comprimi le tue immagini con un plugin come Shortpixel. Basta installarlo, renderlo attivo, andare sulle impostazioni, inserire la tua chiave API e poi cliccare su โSave and Go to Bulk Processโ. Clicca poi su โRestart optimizingโ.
Se credi che la qualitร delle immagini ottimizzate sia troppo bassa, puoi cambiare il tipo di compressione in favore di Glossy o Lossless.
I risultati
Diamo uno sguardo a che impatto queste ottimizzazioni hanno avuto sul pagespeed verificando con alcuni tool.
Ecco tutte le statistiche relative al prima e al dopo le ottimizzazioni sul Google PageSpeed Insights:

Prima dellโottimizzazione.

Dopo lโottimizzazione.
Ed ecco invece GTMetrix:

Prima dellโottimizzaione.

Dopo lโottimizzazione.
Puoi notare come la pagina impiegasse 5.9 secondi a caricarsi completamente, con una dimensione di 1.89mb e 67 richieste. Dopo le varie ottimizzazioni, tutte e 3 i parametri sono scesi. La dimensione della pagina รจ ora di 695 kilobytes ed impiega 4 secondi a caricarsi completamente. Il numero di richieste invece รจ diminuito di quasi il 50%.
Se verifichiamo tutte le pagine del sito con il Site Audit di Ahrefs, possiamo notare un miglioramento del 40% circa, ed una stima che pone il sito nel 95esimo percentile in termini di velocitร .
Conclusioni
Tutto รจ andato bene per il mio sito, e anche su molti altri dove ho implementato la stessa procedura. ร comunque importante ricordare che ogni sito WordPress รจ differente. Potresti avere piรน plugin, un tema pesante, un hosting lento o un maggior numero di script di terze parti che contribuiscono a rendere il sito una lumaca.
Se la velocitร di caricamento necessitร di ulteriori miglioramenti dopo tutte queste ottimizzazioni, รจ probabile che ti serva un intervento personalizzato sul sito. Vale quindi la pena ingaggiare un developer o un esperto dedicato per dare uno sguardo al da farsi.
Se vuoi invece piรน dettagli su di un particolare tipo di problematica, ti invito a leggere la nostra guida completa al page speed.
Pensi mi sia dimenticato di menzionare qualcosa? Fammelo sapere su Twitter.
Tradotto da Matteo Ginnetti, Consulente Digital Marketing.