La diffusione enorme conquistata nel web dai CMS (Content Management Systems ovvero Sistemi di gestione dei contenuti) negli ultimi anni non è stata priva di conseguenze negative.
Se da un lato, infatti, è diventato relativamente più semplice costruire siti complessi e con funzionalità interattive e soprattutto mantenerli aggiornati, anche a cura del cliente finale, il prezzo da pagare è stato rappresentato da una minore velocità o addirittura da una più o meno marcata lentezza nel caricamento delle pagine.
Tecnicamente il motivo è molto semplice: mentre un sito statico richiede il semplice caricamento del codice delle pagine ed eventualmente l’esecuzione di JavaScript, un sito dinamico comporta l’intervento del server applicazioni (PHP) e soprattutto di un database (MySQL) al quale vengono effettuate una serie di query o “chiamate”.
Maggiore è il numero di query e più tempo le pagine impiegheranno a caricarsi, soprattutto nel caso di server non particolarmente performanti, obsoleti e/o sovraccarichi.
L’aumento del tempo di caricamento di un sito influisce negativamente sul suo posizionamento nei motori di ricerca, tecnicamente chiamato SEO Ranking.
Esistono numerosi strumenti online che assegnano un punteggio da 0 a 100 ai siti in base a tale parametro, il più importante dei quali è Google PageSpeed Insights.
Ecco quindi che la maggiore o minore velocità di caricamento delle pagine acquista un’importanza che va al di là della semplice fruibilità dei contenuti, fermo restando che questa ha comuque rilevanza: l’attenzione dei visitatori deve essere conquistata e mantenuta non solo tramite contenuti interessanti e pertinenti ma anche evitando loro attese esagerate prima di visualizzarli.
Vediamo dunque, brevemente, quali sono i fattori che incidono positivamente sulla velocità di caricamento con particolare riferimento ai siti dinamici basati su CMS.
Elenchiamoli di seguito, senza scendere troppo in dettaglio dal momento che sul web sono reperibili numerose fonti su questo argomento:
- la qualità del servizio ricevuto da parte del MNT (Maintainer).
A volte risparmiare qualche euro per l’hosting non è una buona idea…
Non bisogna mai dimenticare che in un comune servizio di hosting condiviso, il server ospita un numero più o meno elevato di siti: se questo numero eccede le capacità del server stesso, si verificheranno ritardi o addirittura timeout.
Nel caso di siti particolarmente “pesanti” o che ricevono volumi di traffico molto alti, la scelta dovrà ragionevolmente cadere su un server dedicato. - usare la versione più recente di PHP che, al momento attuale, è la 7.4.
- scegliere templates e plugins affidabili, recenti e soggetti ad aggiornamenti su base regolare.
- utilizzare solo i plugins realmente necessari, riducendo il rischio di conflitti.
- mantenere il CMS ed i relativi plugin aggiornati (vedere questo articolo).
Gli updates vengono infatti solitamente rilasciati per correggere bug che possono incidere sulle prestazioni del sito e per chiudere falle nella sicurezza. - ottimizzare il file di configurazione wp-config.php di WordPress (vedere questo articolo).
- minimizzare i files CSS e JS;
- impiegare un CDN – Content Delivery Network (ad es. Cloudflare);
- utilizzare un servizio di cache fornito dal MNT sul server o installare un plugin a tale scopo.
A proposito di templates e plugins, l’utilizzo di visual editor incorporati nel tema (ad es. Divi) o gestiti da un apposito plugin (Elementor, WPBakery) può semplificare in misura consistente la creazione di schemi di pagina e contenuti complessi ma tutto ha un prezzo : infatti, se il loro utilizzo comporta il caricamento di una mole significativa di codice CSS e di librerie JavaScript, l’effetto sarà inevitabilmente quello di un rallentamento del sistema.
Mettiamoci dunque nei panni di chi ha realizzato un sito e si rende conto che impiega molto a caricarsi.
Il nostro collega andrà a misurare la performance sul già citato sito Google PageSpeed Insights e si vedrà attribuire un punteggio insufficiente (diciamo, 50 o gù di lì).
Urgono dunque misure correttive.
L’impianto complessivo è corretto, nel senso che sono soddisfatti i requisiti da 1. a 6. elencati sopra … ma manca ancora qualcosa.
Da qui in poi, occorre prestare attenzione soprattutto al punto 9. cioè all’utilizzo di un sistema di cache.
I requisiti irrinunciabili di un qualsiasi meccanismo di cache – plugin o servizio fornito dal MNT – sono i seguenti:
- aggiornamento dei files statici in caso di modifica dei contenuti;
- cancellazione e nuova creazione automatica periodica della cache;
- esclusione del meccanismo per gli utenti che abbiano effettuato il login (i quali devono, quindi, visualizzare le pagine dinamiche).
Una cache configurata male può infatti causare un’errata visualizzazione dei contenuti del sito, i quali risulteranno non aggiornati ai visitatori esterni ed addirittura all’amministratore del sito che stia procedendo alla loro modifica.
Inoltre, bisogna evitare di sovrapporre più metodi di cache, ad esempio Memcached reso disponibile sul server ed un plugin come WP Fastest Cache o WP Super Cache (per WordPress) poiché il loro funzionamento potrebbe entrare in conflitto e generare effetti imprevisti: contenuti non aggiornati, contenuti che spariscono, lentezza del sito (proprio così!) … a maggior ragione, se si impiega anche un sistema di CDN (punto 8. dell’elenco).
A proposito di quest’ultimo: in generale, il suo impiego risulta utile solo se l’hosting del sito è poco performante (risorse limitate) e quest’ultimo contiene un gran numero di fotografie.
Insomma, la parola d’ordine in questi casi è: prudenza.
Occorre valutare le reali esigenze del sito specifico ed adottare uno per uno gli strumenti che possono migliorare le prestazioni del sito stesso, testandoli e verificando se sono idonei all’uso o se occorre provare altro.