[Case Study] Come ho migliorato di 5 volte la velocità di un sito WordPress passando ad un CMS Custom
In questo case study ti mostro come ho aiutato un cliente ad aumentare la velocità del suo sito web di 5 volte, abbandonando un sito WordPress lento e pieno di plugin in favore di un CMS totalmente personalizzato e sviluppato ad hoc in base alle sue esigenze. Così facendo, oltre a portare lo Speed Index del sito da 7,3 a 1,4 secondi, siamo riusciti a creare un flusso di pubblicazione dei contenuti fluido ed efficace. Ora la pubblicazione e la gestione dei contenuti è facile e veloce.
Il contesto
Non è infrequente per chi lavora con il web trovarsi di fronte ad un sito poco veloce, lento e macchinoso, anche se si tratta di un sito costruito recentemente. Soprattutto se stiamo parlando di un sito costruito con WordPress visto che circa il 40% dei siti web del mondo è costruito con questo CMS.
La lentezza di un sito diventa frustrante non solo per i visitatori che lo navigano, i nostri lettori o potenziali clienti, ma persino per chi dovrebbe gestirlo e lavorarci tutti i giorni. Dobbiamo tenere a mente che esistono diversi modi per costruire un sito web in WordPress, ognuno con i sui vantaggi e i suoi svantaggi.
Ad un estremo abbiamo la possibilità di sviluppare un tema personalizzato (”alla vecchia maniera”) andando a creare i template direttamente da codice: questo ha il vantaggio che il codice sarà peculiare a quello che dovremo realizzare e poco ridondante e ottimizzato, mentre ha lo svantaggio che per lo sviluppo ed eventuali modifiche c’è bisogno di uno sviluppatore.
All’estremo opposto abbiamo la possibilità di usare temi che supportano in tutto o in parte gli ormai famosi page builder drag & drop come ad esempio Elementor o WP Bakery. Se da una parte questi strumenti hanno il vantaggio di ridurre i tempi di sviluppo e danno al cliente la possibilità di poter modificare il layout del sito in autonomia, dall’altra, per la loro natura generalista, hanno un impatto sulle performance del sito visto che devono andare anche a coprire funzionalità che magari per un determinato sito sono inutili.
A questo si aggiunge l’abitudine ormai sedimentata di molti miei colleghi di riempire WordPress di plugin. Sicuramente l’ecosistema di WordPress incentiva questa pratica perché promette di poter avere a disposizione praticamente qualsiasi funzionalità immaginabile sul proprio sito, semplicemente installando e configurando qualche plugin. Se per funzionalità semplici questo è decisamente possibile e anche consigliato, quando si iniziano ad aggiungere funzionalità su funzionalità, plugin su plugin, il codice che il server deve eseguire ad ogni richiesta aumenta ad dismisura e le performance calano inesorabilmente.
Ovviamente non sto dicendo che WordPress in se sia un cattivo strumento, altrimenti non lo userei nemmeno io. Come in ogni cosa esistono strumenti e strategie che sono più efficaci di altri per raggiungere un certo obiettivo: in questo caso WordPress è molto utile in tutte quelle situazioni in cui c’è bisogno di gestire contenuti, un po’ meno quando si tratta di costruire un sito con molte funzionalità avanzate e personalizzate.
Ed è proprio questo il caso che mi sono trovato di fronte quando un mio cliente si è lamentato della velocità del suo sito, di quanto fosse difficile capire come inserire nuovi contenuti e del fatto che alcune parti del sito non fossero in linea con la brand identity perché difficilmente personalizzabili.
Il problema: WordPress super lento
Non è servita un’analisi approfondita per capire il problema ed è stato subito tutto chiaro aprendo il pannello di amministrazione. Mi sono trovato di fronte ad un sito web creato in WordPress, con page builder e la bellezza di 47 plugin per estenderne le funzioni, tra cui: plugin per la gestione di eventi, WooCommerce per la vendita dei biglietti creati con il plugin per gli eventi, BuddyPress e bbPress per gestire un’area riservata per gli utenti e per farli interagire tra di loro, due plugin per gestire l’accesso degli utenti. I plugin rimanenti servivano ad estendere o personalizzare le funzionalità dei precedenti. Il carico del server era palesemente elevato.
Oltre a questo risultava veramente intricato capire come poter aggiungere nuovi contenuti in sezioni specifiche del sito. Probabilmente si sarebbe potuto fare in qualche sotto menù della dashboard. Peccato che per poterlo scoprire si doveva andare a tentativi e scegliere tra i 50 presenti nella sidebar: tenendo a mente che ogni pagina del pannello di amministrazione veniva caricata con una media di 15-20 secondi, non era difficile impiegare mezza giornata lavorativa in questa attività.
In questa situazione il fatto che la home page si caricasse in circa 7 secondi sembrava quasi un miracolo. Drammatizzazioni ed esagerazioni a parte, ora capivo la frustrazione del cliente. Ed era più che giustificata.
Il sito avrebbe dovuto avere diverse funzionalità: gestione e pubblicazione di eventi con la possibilità di acquisto di un ticket, un’area riservata dove gli utenti accreditati avrebbero potuto interagire tra di loro, gestione e pubblicazione documentale, oltre alle funzionalità classiche di un CMS quali la gestione degli articoli di un blog e delle varie pagine. Nonostante esistano per ognuna di queste funzionalità dei plugin specifici, in questo caso evidentemente WordPress non era la soluzione migliore per raggiungere l’obiettivo.
La soluzione: un CMS custom
Il piano di azione per risolvere questa situazione si è articolato in due fasi successive.
In primo luogo abbiamo identificato come un possibile nucleo a se stante le funzionalità riservate agli utenti accreditati. Quindi il primo step è stato quello di creare un’area riservata scorporata dal sito principale, in un sotto dominio, in cui è stata ricostruita un’area riservata con le funzionalità principali di un forum. Questo ci ha permesso intanto di alleggerire WordPress da bbPress, BuddyPress e dalla gestione degli utenti (che tra l’altro poneva una questione di sicurezza e privacy).
Nel secondo step, di conseguenza, si è potuto procedere alla creazione vera e propria di un CMS su misura. La questione degli utenti è molto importante perché così facendo, a questo punto, è stato possibile costruire il nuovo sito tenendo a mente che solo gli amministratori avranno accesso al backend. Questo alleggerisce ulteriormente la logica e il codice da dover implementare, aumentando anche la sicurezza globale della piattaforma.
La costruzione del CMS è stata veramente divertente. Come esperienza utente ho deciso di prendere spunto e seguire quella di WordPress, sia perché è innegabile che sia intuitiva e facile da usare, sia perché essendo già abituati a questo CMS sarebbe stata più facile l’interazione da parte del team del cliente che avrebbe gestito il sito. Per la UI invece mi sono affidato allo splendido NuxtUI, a TailwindCSS e a componenti personalizzati.
Seguendo queste direttrici sono andato a costruire le varie aree della dashboard di amministrazione in base alle funzionalità richieste: area per la gestione degli articoli del blog e delle categorie, area per la gestione dei file media, una sezione per creare e gestire gli eventi da mostrare sul sito e tutta la parte di e-commerce legata agli acquisti dei relativi ticket, un’area in cui poter inserire nuovi contenuti che sono mostrati sul frontend a mo’ di store locator su una mappa, nonché la sezione per la gestione dei file e documenti scaricabili dal sito.
Il vantaggio di aver adottato una soluzione custom sta nel fatto che le sezioni che in WordPress avrebbero richiesto l’uso di un plugin, ovvero tutte quelle funzioni che non riguardano il blog, ora possono avere una struttura dati personalizzata nel database, con il quale si può interagire direttamente. Il risultato è un’interfaccia adatta alle esigenze specifiche, non macchinosa ma bensì intuitiva e soprattutto veloce.
Alcuni risultati
Vediamo ora qualche metrica ottenuta con Lighthouse per capire di cosa stiamo parlando. Qui riporterò i risultati che riguardano il frontend e quindi i visitatori del sito. Come ho già detto il pannello di amministrazione di WordPress è quello che dava i problemi maggiori, caricandosi ancora più lentamente del frontend che vedrai di seguito, rendendo di fatto il sito ingestibile.




Nota: eventuali cali in Accessibilità e SEO sono dovuti a semplici alt tag mancanti
Il miglioramento della velocità del sito è in media di 5,5 volte. Questo significa che i motori di ricerca premieranno questo sito e salirà di posizione nei risultati, che i visitatori del sito saranno felici di navigare velocemente da una pagina all’altra e che tutto questo porterà a delle conversioni maggiori.
Significa che per gestire il sito non serve più tutta la mattina ma bastano una decina di minuti per caricare nuovi contenuti, rendendo il team del cliente meno stressato. In più rende felice me per aver consegnato un lavoro per cui sono tutti felici.
Considerazioni finali
Immagino che la domanda venga spontanea: “Quindi è meglio non usare WordPress?”. La mia risposta come al solito è: “Dipende”.
Come ho già avuto modo di dire, WordPress è uno strumento fantastico e versatile (infatti questo sito è fatto con WordPress), ma come tutti gli strumenti generalisti si arriva ad un certo punto in cui gli svantaggi sono molti di più dei vantaggi e forse è meglio fare considerazioni aggiuntive.
WordPress è adatto per:
- Piccoli siti vetrina
- Piccoli e-commerce
- Siti estesi ma con contenuti standardizzati (blog, magazine, annunci)
Un CMS custom è utile quando:
- I tipi di contenuto sono variegati e/o serve una struttura dati personalizzata
- Servono funzionalità difficilmente realizzabili attraverso plugin
- Servono performance avanzate
È utile sottolineare che le stesse considerazioni che abbiamo fatto per il CMS custom valgono anche per altri prodotti come web app, dashboard personalizzate, gestionali o pannelli di business intelligence. Vengono usati gli stessi strumenti avanzanti che si usano per costruire un CMS custom che, di fatto, non è altro che un caso particolare di web app.
Se anche il tuo sito soffre degli stessi problemi di cui ho parlato in questo articolo, oppure ti interessa costruire un software web performante, puoi contattarmi per una valutazione totalmente gratuita. Troveremo una soluzione su misura per le tue esigenze.