Come velocizzare un sito PHP Un elenco di possibili strategie per ottimizzare il nostro sito "lumaca"

<span class="entry-title-primary">Come velocizzare un sito PHP</span> <span class="entry-subtitle">Un elenco di possibili strategie per ottimizzare il nostro sito "lumaca"</span>

Quando un sito rallenta, non è quasi mai agevole prendere delle decisioni o capire cosa sia necessario fare: le cause, infatti, sono molto varie ed è difficile anche solo elencarle tutte. Il tipo di server, ad esempio, per quanto possa essere influente sulla velocità del sito è solo una parte del discorso, che nel caso di WordPress viene spesso influenzato dal tipo di plugin installati.

Generalmente, infatti, dovremmo considerare, nell’ordine, una serie di aspetti e provare a valutare le relative contromisure per capire se qualcosa cambia. Non c’è una regola fissa in questo genere di valutazioni anche perchè, di fatto, ogni sito tende a fare storia a sè.

1) Quale webserver è presente sull’hosting: Apache, IIS, NGINX? Le impostazioni errate del webserver possono, in alcuni casi, portare a rallentamenti sul sito: questo caso è tipicamente difficile da indagare, soprattutto nel caso degli hosting condivisi o shared, dato che i servizi di hosting sui servizi low cost tendono sempre a dire che “è tutto ok“. Diverso è il caso dei cloud o dei dedicati, dove invece possiamo mettere mano, sempre con una certa cautela, alle impostazioni di basso livello del webserver e provare ad ottimizzare, ad esempio, il numero di moduli installati. Per togliere di mezzo o disattivare quelli che non utilizziamo in Apache, per dire, autoindex (il modulo che genera gli indici che permettono di listare le directory, ovviamente si tratta solo di un esempio):

sudo a2dismod autoindex

Per riabilitarlo, la sintassi è questa:

sudo a2enmod autoindex

(vale per qualsiasi modulo, ovviamente si sconsiglia di disabilitare l’autoindex se non a ragion veduta!)

2) Che tipo di backend stiamo sfruttando: PHP, Ruby, Python? Se come è molto probabile state usando PHP, switchare a versioni diverse può in certi casi migliorare le performance per quanto, a livello pratico, non sia una casistica troppo frequente. Su PHP ad esempio esistono svariate modalità di caricamento del linguaggio, cioè i cosiddetti handler, sulle quali ho scritto estesamente su questo sito. Si possono fare, ovviamente, ulteriori considerazioni sul tipo di CMS che stiamo usando, quale Joomla!, WordPress e così via.

3) Quale database è coinvolto per il nostro sito: MySQL, PostGreSQL, MSSQL? A seconda del tipo di database si possono effettuare ottimizzazioni ad hoc: per dire, accedendo ad un client MySQL posso ottimizzare gli indici al fine di velocizzarli, controllare che non ci siano errori nella tabella, effettuare operazioni di reindicizzazione delle chiavi primarie e via dicendo.

4) É possibile effettuare dei tuning MySQL sul database? Ci sono anche delle configurazioni ancora più specifiche, in effetti, per il nostro database, che riguardano in MySQL alcune modifiche sui file di configurazione che dimensionano cache e dati del database. Non sempre è agevole effettuare modifiche sostanziali a questo genere di impostazioni, che vanno considerate in un certo senso “l’ultima spiaggia”, e che tipicamente intaccano le prestazioni solo a livelli di applicazione web più complesse della media.

5) All’interno del sito viene sfruttato qualche plugin di cache? Permette di avere vantaggi effettivi oppure provoca overhead? La cache viene attivata di norma mediante un mix di impostazioni lato server (file .htaccess) e particolari impostazioni nel codice PHP: contrariamente a quello che si scrive sui vari blog, in effetti, non sempre riesce a migliorare le prestazioni del sito, anzi in certi casi (paradossalmente) ci sono siti che funzionano addirittura meglio senza. È il caso, ad esempio, di configurazioni molto corpose che sfruttano intensivamente RAM o CPU per generare la cache la prima volta, col risultato che i vantaggi si fanno apprezzare solo in parte o a determinate condizioni. A parte questo, è importante buttare un occhio anche al corretto settaggio dei tempi di scadenza (expire) della cache, su Apache si fa mediante file htaccess.

6) Esiste una CDN per servire più velocemente i contenuti? Offre effettivamente dei vantaggi? CloudFlare e Google sono tra le soluzioni più utilizzate, ma andrebbero valutate in termini concreti sul flusso di visitatori e sulla loro provenienza geografica, per capire se davvero sfruttino in positivo questa tecnologia.

7) Quali sono le dimensioni medie della pagina del sito? Se la dimensione media è di qualche centinaio di KB per pagine di solo testo, questo cambia drasticamente nel caso di media streaming di audio o video: nel qual caso, è sempre bene appoggiarsi ad un servizio esterno in cloud che permetta di visualizzare velocemente quei dati.

8) Si sfruttano meccanismi asincroni nel caricamento delle risorse lato client? Minificare i file CSS e JS può essere una soluzione? Se riusciamo a comprimere il numero di chiamate HTTP tanto meglio: nella pratica, non sempre (un po’ pessimisticamente direi quasi mai) è agevole o possibile farlo. Se una singola pagina richiede 60 file JS o CSS, dovrebbe essere possibile – intervenendo sul theme della pagina, ad esempio – ridurre almeno del 40% – 60% queste chiamate, snellendo così notevolmente il caricamento della pagina.

9) Dove è localizzato il vostro server? La posizione geografica può influire sui tempi di caricamento del sito: non è sempre vero, infatti, che la vicinanza geografica si traduca in maggiore velocità, perchè tale valutazione è sempre molto relativa e l’unico modo per accertarsene è quello di fare dei test mediante scripting apposito.

Del resto, il criterio principe per fare questo genere di valutazioni è molto influenzato dal fattore umano: se avete iper-ottimizzato il vostro sito ma il cliente o il visitatore medio si lamenta che sia lento, non vi servirà a molto averci lavorato. Se l’utente può iniziare ad usare il sito in pochi secondi senza intoppi, sarà quello che farà la differenza e non, per dire, un raffinato meccanismo di ottimizzazione della cache di MySQL.

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.