I plugin WordPress che effettuano page caching, o HTML caching, sono tra i più utili in un ambiente dove gli accessi sono frequenti, in quanto evitano a WordPress di creare dinamicamente il contenuto della pagina ad ogni nuova visita. Per creare il contenuto della pagina, infatti, WordPress carica tutti i plugin attivi, il tema ed avvia una serie di query SQL al fine di reperire tutti i dati necessari per poter infine restituire il codice HTML della pagina al web server che si occuperà di restituirla al client.
Queste operazioni sono molto costose in termini di risorse server e sono spesso la causa di elevati tempi di risposta (TTFB). I plugin di cache mirano a risolvere questo problema salvando una copia del codice HTML della pagina sul disco prima di restituirla al web server. Quando un utente successivamente proverà ad accedere alla stessa pagina, anziché avviare tutto il processo di elaborazione il plugin si limiterà a leggere il codice HTML salvato su disco ed a restituirlo al web server, velocizzando anche di molto il tempo di risposta.
Naturalmente qualora disponeste di un vostro server o di un hosting provider che vi consente di effettuare caching direttamente dalle impostazioni del web server, come Fastcgi Cache di Nginx, preferitelo in quanto eviterete in primis l’avvio dello stesso WordPress e dell’engine PHP in generale ma in più velocizzato sarà anche l’accesso alle risorse statiche come immagini, font, CSS e file Javascript.
Il problema della cache su disco sta nella tipologia di disco. Il classico disco rigido è costituito da uno o più piatti di alluminio o vetro in rapida rotazione e da due testine per ogni disco, una per lato, le quali rimangono sospese alla distanza di pochi nanometri dalla superficie del disco grazie all’aria smossa dalla rotazione stessa, leggendo o scrivendo i dati. La velocità di rotazione dei dischi può superare i 15.000 giri al minuto; attualmente i valori standard di rotazione sono 4.200, 5.400, 7.200, 10.000 e 15.000 giri al minuto. Le diverse interfacce realizzate nel tempo, vale a dire IDE e SATA, hanno consentito accessi al disco sempre migliori.
Il problema del disco rigido è che, a prescindere dall’interfaccia, è un disco magnetico e non elettronico. Nulla di paragonabile alla velocità di accesso di RAM, totalmente elettronica. Con l’avvento della tecnologia SSD qualcosa cambia. I dati vengono memorizzati in chip di memoria flash aumentando di moltissimo la velocità di lettura che passa dai 128 MB/s di un tipico disco rigido ai 560 MB/s di media. Nonostante il repentino cambiamento, l’accesso dei dati in RAM è ancora sempre molto più veloce.
Per velocizzare l’accesso alla cache monteremo la directory di cache del plugin di turno direttamente in RAM sfruttando ad esempio un RAM Disk. Un RAM Disk non è altro che una porzione di RAM utilizzata come se fosse un disco rigido, col vantaggio di avere prestazioni in lettura e scrittura enormemente più elevate, anche i tempi di accesso sono migliori di gran lunga.
I seguenti due screenshot mostrano le performance comparate, sia in lettura che in scrittura, di un classico Hard Disk, un disco SSD ed una partizione RAM Disk:
Per creare una partizione in RAM su Linux utilizzeremo il file system tmpfs, che come suggerisce lo stesso nome originariamente fu realizzato per memorizzare file temporanei. Di seguito il comando per montare la partizione di cache in RAM:
sudo mount -t tmpfs -o size=500M tmpfs /var/www/miosito.com/wp-content/cache
Il comando mount serve per per creare un punto di mount, mentre:
La parte finale del comando sta ad indicare la directory di cache del plugin che stiamo utilizzando.
Per far si che la partizione venga montata anche dopo il riavvio del server, modificare il file /etc/fstab ed inserire:
tmpfs /var/www/miosito.com/wp-content/cache tmpfs defaults,size=500M 0 0
Salvare il file.
I tempi di accesso in RAM sono sempre molto più veloci di quelli di qualsiasi disco. Montare la directory di caching del plugin di turno in RAM ci consentirà di avere tempi di accesso più rapidi e performance migliori per la metrica Time To First Byte, in particolar modo per quei web server molto frequentati che non dispongono di politiche di caching a monte e che usano ancora i vecchi hard disk IDE o SATA.
Se hai altri suggerimenti o hai bisogno di aiuto, non esitate a scrivere commentando questo articolo.