La velocità di un sito web è uno di quegli elementi che si dà per scontato, ma che quando manca si sente in maniera decisiva. Non solo gli utenti si stancano immediatamente di aspettare e si allontanano, ma anche i motori di ricerca si accorgono del problema, penalizzando il sito e peggiorando la situazione. Per avere prestazioni al massimo, occorre sapersi orientare nell’universo dei sistemisti e dei server, i principali responsabili della velocità di un sito.

Fabrizio Leo, sistemista e CEO di FlameNetworks ha spiegato ad ExpoItalyOnline come comprendere lo stato di salute e migliorare le prestazioni dei nostri siti web.
Innanzitutto chi è il sistemista e come cosa gestisce all’interno di un sito?
Il sistemista è la figura professionale che si occupa dell’amministrazione dei sistemi informativi. Esistono diversi profili, ognuno con responsabilità, competenze e ruoli ben specifici:
– Amministratore di Sistema
– Sistemista Applicativo
– Amministratore del Database
– Amministratore di Rete
Molto spesso queste figure professionali lavorano a stretto contatto, soprattutto per effettuare un’analisi puntuale dei problemi e trovare una loro efficiente risoluzione. Le principali responsabilità e mansioni di un Amministratore di Sistema sono:
– installazione fisica del server
– installazione del sistema operativo
– configurazione e manutenzione del software (inclusi gli aggiornamenti) di sistema
– tuning del sistema
– sicurezza e monitoraggio del sistema
– definizione delle policy di backup e disaster recovery

Quali sono i motivi principali per cui un sito web può rallentare rispetto ai tempi di apertura di pagina?
Nell’arco di questi anni, ho avuto modo di classificare le cause in 4 macro categorie. Innanzitutto un sito web scarsamente (o per nulla) ottimizzato. Quando hai un sito web pesante, cioè con una homepage di diversi MB, immagini non riadattate per il web, un numero spropositato di interrogazioni alla base dati (magari su tabelle contenenti migliaia di record e senza neanche un indice) e software scritto male, quel sito web difficilmente farà strada.
Stesso discorso vale per un server: se i servizi non sono correttamente configurati oppure le componenti hardware non sono all’altezza, quel sistema è destinato ad avere una vita breve e travagliata.
Esiste poi l'”overselling” che è equiparabile all’overbooking delle compagnie aeree, soprattutto quelle low-cost e che, a quanto pare, esiste anche nel mondo del Web Hosting. Se il Provider riempie i propri server a dismisura, non può ovviamente garantire il giusto fabbisogno di risorse a tutti i siti web che deve gestire.
Così facendo il Provider guadagna due volte: la prima volta per aver acquisito un nuovo cliente, la seconda per non aver acquistato altri server. Personalmente ritengo che l’overselling sia una strategia molto miope, perchè prima o poi il cliente subirà i suoi effetti negativi non solo in termini di velocità al sito web, ma di efficienza del servizio in generale. Infatti il Provider, proprio per “massimizzare” i profitti, tende anche a non dimensionare il proprio organico in funzione della customer base da gestire. Il risultato è magari un’assistenza lenta e poco efficiente.

Server Down, nessun hosting provider ne è immune, ma come minimizzare il rischio?
Ci sono diversi ambiti, tutti complementari tra loro, per abbattere il rischio downtime.
Avere connettività Internet da diversi fornitori è fondamentale per garantire raggiungibilità dei sistemi sia in caso di blocco di uno dei fornitori, sia in caso di problemi di routing. Linee di alimentazione ridondate e batterie di emergenza garantiscono continuità di energia in caso di blackout improvvisi. La componente di networking deve essere costituita da firewall e switch ridondati e con un’elevata capacità trasmissiva, onde evitare colli di bottiglia. Anche la parte di sicurezza è fondamentale, devono essere infatti previsti dei sistemi di video sorveglianza e di controllo degli accessi con guardiani ad hoc.

Siamo arrivati finalmente al server. Essendo un pezzo di ferro è ovviamente impossibile stabilire quando (e se) si romperà. Prima di tutto l’hardware deve essere adatto: mi riferisco a sistemi con doppio alimentatore, doppio processore, e dischi in RAID hot-swap.
Semmai dovesse rompersi qualcosa, l’unico modo serio ed efficace per non avere downtime, è disporre di un’infrastruttura ridondata. Avere cioè sistemi che lavorano in parallelo su più server, in modo che non vi siano disservizi a fronte di un problema su uno dei nodi che compongono l’infrastruttura stessa. Oggi, grazie alle tecnologie di virtualizzazione ed al Cloud Computing, è abbastanza semplice implementare soluzioni tolleranti ai guasti. Parlo cioè di infrastrutture con un certo numero di host di computazione collegati ad una SAN (Storage Area Network) ad alta velocità.
Purtroppo i costi di queste soluzioni non sono appannaggio di tutti, infatti in molti casi si “preferisce” utilizzare il vecchio modello a server singoli. In tali situazioni, un problema hardware comporta necessariamente un disservizio. E’ fondamentale avere sempre a disposizione i backup, una policy efficace di disaster recovery e tanta pazienza.
È vero che esistono sistemi di caching lato server/client in grado di velocizzare un sito web? In cosa consistono?
Si, è vero. I sistemi di caching lato server più diffusi su Linux e PHP sono Memcached, APC e Varnish. Questi, in generale, sono nati per ottimizzare l’esecuzione delle operazioni più frequenti migliorandone le prestazioni e, al tempo stesso, ridurre il consumo di risorse computazionali. Nel web il concetto è identico: evitare di “impegnare” il server sempre per le stesse richieste.
Perchè quando si parla di cache, si pensa subito alla velocità? Perchè quando una richiesta ad un sito web viene gestita dalla cache, l’informazione viene prelevata dalla RAM del server oppure da un file html statico precedentemente creato dal sistema di caching, senza che il server abbia dovuto elaborare il codice (es: PHP, ASP, etc…) tantomeno le eventuali interrogazioni al Database.
Naturalmente disporre di un sistema di caching non risolve tutti i problemi prestazionali. Se il sito web è pesante, anche con il miglior sistema di caching non sarà mai abbastanza veloce.
Come faccio a capire perché il mio sito web si apre lentamente?

Ci sono alcuni strumenti online che analizzano gratuitamente il sito web e forniscono report completi tra cui il tempo di caricamento pagina, la quantità di richieste effettuate dal sito web e la dimensione della pagina richiesta, evidenziandone le eventuali criticità. Tra i migliori ci sono GTmetrix e Pingdom.
Grazie a questi sistemi e soprattutto al cosiddetto Waterfall, si può visualizzare esattamente quale risorsa impiega maggior tempo ad essere servita, causando di conseguenza ritardi nell’apertura della pagina. Come indicato in precedenza, la lentezza di un sito web può dipendere da diversi fattori e pertanto ritengo che, al di là di questi strumenti di indubbia utilità, la scelta di un servizio di hosting di buona qualità sia fondamentale e propedeutica per non avere problemi prestazionali, a patto che il sito web sia altrettanto ben ottimizzato.
Qualche suggerimento per ottimizzare le prestazioni di un sito web senza spendere un capitale?
Se parliamo di CMS conosciuti (es: WordPress, Joomla, PrestaShop, etc…) è sempre cosa buona e giusta utilizzare temi minimali e che si prestano bene alle personalizzazioni del progetto a cui stiamo lavorando. Usate immagini di piccole dimensioni, soprattutto nelle slide in homepage.
Limitiamo la scelta del plugins al minimo indispensabile e cancelliamo (non disattiviamo) quelli non necessari. Verifichiamo con il Provider quale sistema di caching è disponibile sul server (se non c’è fatevelo installare!) e configuratelo per il vostro sito web. Controllate periodicamente il Database e svecchiate le tabelle contenenti il maggior numero di record, effettuando anche un optimize table globale. Infine, evitate di appesantire troppo il file .htaccess perchè esso viene elaborato ogni qualvolta viene effettuata una richiesta al vostro sito web.