I tempi di risposta delle pagine web sono ormai uno degli aspetti fondamentali per ottenere un buon posizionamento sui motori di ricerca, quindi è importante capire in che modo sia possibile velocizzare il proprio sito web. I motori di ricerca hanno il compito di “cosigliare” i siti migliori a chi effettua una ricerca specifica. Tra i parametri per definire quale sia il sito “migliore”, c’è anche la velocità di navigazione delle pagine web. Non c’è bisogno di discutere sull’argomento, è ovvio che tutti odiamo navigare siti web pesanti, dopo qualche click li abbandoniamo ed effettuiamo una nuova ricerca e questo google lo sa bene, motivo per cui premia i siti veloci nelle ricerche organiche. Ovviamente non tutti hanno la possibilità di ospitare il proprio sito web su server super potenti e con banda illimitata, quindi bisogna trovare qualche escamotage per ottenere un sito web reattivo senza spendere un patrimonio in infrastrutture. Questo argomento può essere affrontato a vari livelli e fornire una soluzione sia ai dilettanti che agli utenti più esperti.Ovviamente gli approcci sono diversi, nelle soluzioni semplici si tratterà di installare semplicemente un plugin o fare delle scelte di progettazione diverse, nelle soluzioni complesse si tratterà si interventi sulla configurazione del server, bilanciamento delle risorse e/o upgrade dell’hardware. Dato che la stragrande maggioranza dei blogger utilizza la piattaforma wordpress preferisco affrontare solo la soluzione semplice, quella dei plugin, ma dandovi qualche informazione preziosa riguardo la mia esperienza personale con un sito web a traffico elevato.

Negli ultimi 3 anni ho curato, dal punto di vista esclusivamente seo e tecnico, il sito web di mia moglie, www.misya.info, un blog di cucina che sta avendo un grande successo grazie ai contenuti di ottima qualità, chiari e precisi. Dopo il primo anno online, le visite sono aumentate esponenzialmente ed il server ha inziato a dare segni di cedimento, tutta le memoria si esauriva velocemente e spesso il webserver andava in crash.
Il mio primo approccio per risolvere il problema è stato di tipo sistemistico, ossia ottimizzare le configurazioni del web server e del database server ma, nonostante tutto, non ci sono stati grossi miglioramenti. Successivamente ho provato disabilitando alcuni plugin, togliendo al sito delle funzionalità carine, ma anche in questo caso non ho ottenuto dei grandi miglioramenti, le visite erano troppe. Un giorno di due anni fa ho poi scoperto l’esistenza dei plugin per la cache su wordpress. Praticamente i plugin , alla prima visita di ogni pagina, generano una versione HTML (cached) che sarà utilizzata per servire tutti i visitatori successivi senza eseguire più codice PHP ed interrogazioni al DATABASE. In questo modo il sito diventa come un “vecchio sito HTML” che non richiede l’utilizzo del processore e del database per generare la pagina web da inviare al visitatore, è già bella pronta e disponibile per tutti. I plugin di cache per wordpress rallentano notevolmente il sito web nei primi minuti dall’accensione del server perchè devono generare (quindi scrivere sul disco) tutte le pagine da utilizzare come cache, ma dopo qualche minuto il sito web inizia ad essere velocissimo, a non fare più utilizzo di processi MYSQL (database) e la percentuale di CPU (utilizzo del microprocessore) scende drasticamente rendendo il server molto più reattivo.

Il plugin per la cache su wordpress che ho utilizzato qualche anno fa era WP SUPER CACHE e mi ha dato grandi soddisfazioni ma negli ultimi due anni il sito è cresciuto ulteriormente ed il server ha iniziato nuovamente a cedere. La memoria utilizzata è salita, la CPU era sempre al 100% ed il disco era continuamente in scrittura per gestire la memoria virtuale. Dopo innumerevoli tentativi di ottimizzazione, sia del codice che del server, che a dire il vero aveva già 8Gb di ram e quindi non era male, sono stato costretto a fare un Upgrade completo del server passando alla seguente configurazione:

CPU Intel Quad Core a 2.600 Mhz
8 Gb Ram a 1066 Mhz
HD 500gb super veloce

Il risultato? Niente di che, il sito continuava a bloccarsi quando il numero degli utenti contemporanei aumentava, quindi ho deciso disattivare i plugin wordpress uno alla volta per capire se c’era qualcosa che non funzionasse bene. Alla fine ho capito che il plugin che bloccava il server era proprio WP SUPER CACHE, molto ma molto utile se il numero degli utenti non è elevatissimo ma in grado di abbattere un super server se il numero degli utenti aumenta. Sconsiglio vivamente l’utilizzo di WP SUPER CACHE se avete un sito web che conta più di 500-600 visitatori unici contemporanei come picco giornaliero. Dopo aver disintallato WP SUPER CACHE ho provato svariati plugin alternativi ma sfortunatamente erano tutti basati su WP SUPER CACHE come base di partenza quindi presentavano tutti lo stesso difetto, ossia quello di occupare parti di memoria e perderne il controllo lasciandola quindi inutilizzabile per il sistema finchè non andava in crash.

La soluzione definitiva per la cache su wordpress a mio avviso è W3 TOTAL CACHE, non presenta i memory leaks di WP SUPER CACHE, abbassa l’utilizzo della CPU ad appena il 30% quando c’è il pieno carico, ed ha superato lo stress test dei 600 visitatori contemporanei (nello stesso istante). Come plus, W3 TOTAL CACHE ha una serie di opzioni molto interessanti come la compressione dei CSS (minify) ed alcuni aspetti interessanti per ottimizzare l’output per i dispositivi mobile (Iphone, Android, ecc…)

Concludendo, nella sfide WP SUPER CACHE VS W3 TOTAL CACHE, molti consiglierebbero il primo per motivi di benchmarks ma io ho avuto modo di testarli sotto stress continuo e vi consiglio vivamente il secondo se non volete che ad un certo punto il vostro server non abbia più memoria disponibile.