I siti pigri sono i più veloci

Ho messo da parte in questi anni un bel po’ di materiale e documentazione relativi alla performance e ottimizzazione dei siti web, sia per quanto riguarda il cosiddetto lato server, sia per quello che viene chiamato front end.

Verrà – spero presto – il momento di compilare un elenco ragionato di tutte queste risorse (potete farvene un’idea visitando la sezione optimization del mio delicious), ma ora mi limito a citare un articolo che propone in modo molto chiaro uno dei nodi fondamentali da affrontare. Si tratta di Lazy web sites run faster scritto da Gojko Adzic.

Per aumentare le performance dei siti potete investire sull’hardware, quindi più processori e sistemi più veloci, migliore connettività, infrastruttura moderna. Vi accorgerete però che anche così facendo il web server fatica, per architettura, a gestire un sito il cui codice non sia ottimizzato.

Potete allora dedicarvi alla riscrittura (o refactoring) del codice per renderlo più veloce. Anche qui però arriverete ben presto a un limite.

Il segreto, secondo Gojko, sta invece nella progettazione di un sistema che si preoccupi di

  • delegare le operazioni più complesse a processi che girano in background;
  • non comunicare con sistemi esterni in modo sincrono, non importa quanto velocemente;
  • essere pigro: meglio lasciare per dopo tutto quello che non ha necessità di essere eseguito al momento.

Aggiungerei anche di eliminare le elaborazioni inutili, come per esempio l’esecuzione a ogni richiesta di interrogazioni esose (come quelle verso i database) per contenuti che non cambiano quasi mai. In questo caso potrebbe essere interessante sperimentare qualche meccanismo di caching.

Se ripenso ai colli di bottiglia dei progetti che ho visto da vicino, la maggior parte poteva essere evitata rimandando operazioni non immediatamente essenziali, come per esempio:

  • l’invio di un messaggio di posta elettronica di conferma;
  • la trasformazione di file (soprattutto in formato XML);
  • la comunicazione con sistemi di gestione;
  • il calcolo di statistiche.

Capita di trovare anche online degli esempi che fanno riflettere. Ogni volta che utilizzo la funzione “all time” di Feedburner per analizzare il traffico complessivo dei miei feed mi trovo ad aspettare almeno una decina di secondi. Probabilmente il sistema sta elaborando il consuntivo in tempo reale, quando avrebbe potuto farlo a priori. Non c’è nulla di male ad aspettare anche se a volte, per carico del server, viene restituito un timeout. Forse non proprio il modo ideale per gestire questa funzionalità, anche se utilizzata da una minoranza.

Ajax in action

Il termine Ajax è stato coniato da un anno e non si sono fatti attendere i pesanti manuali che spiegano tutto, ma proprio tutto, su questa architettura.

Di Ajax in Action, pubblicato da Manning, ho fondamentalmente apprezzato il modo con cui sono affrontati, fin dalle prime pagine, gli argomenti.

Invece che cominciare a scrivere qualche banale Hello Word con Javascript gli autori hanno infatti preferito chiarire subito che sviluppare applicazioni Ajax è un compito che richiede competenze specifiche.

Per questo motivo si parla prima di tutto di refactoring, di come utilizzare il più possibile Javascript come linguaggio orientato agli oggetti, e di come utilizzare i pattern di sviluppo in soluzioni Ajax. Crane e soci insegnano cioè come partire con il piede giusto.

Imparare da subito questi concetti ripaga subito dopo, perché gli esempi presentati, anche se semplici, non sono mai banali, e consentono anzi di riflettere un bel po’ su come sviluppare nel modo corretto.

L’unico appunto che mi sento di fare (una nota più che un appunto), è che va bene capire come funziona l’architettura Ajax. Ma forse più che voler approfondire più di tanto quanto presentato nel testo, l’importante è capire che Ajax sarà presto integrato – come ho già detto – all’interno dei diversi framework di sviluppo.

Si spera che in questo modo da produttività nell’utilizzare questo tipo di soluzioni sia destinata ad aumentare sensibilmente.

Ajax in Action – di Dave Crane, Eric Pascarello, Darren James, pubblicato da Manning, 640 pagine