Ormai la maggior parte dei siti che girano sulla rete sono sviluppati con linguaggi lato server ed utilizzando database per immagazzinare dati da mostrare all’utente in base alle richieste. La continua evoluzione del mondo internet ha portato alla parallela evoluzione degli strumenti utilizzati e ad un conseguente incremento delle funzionalità  fruibili attraverso un’applicazione web. Purtroppo troppe funzionalità  portano spesso ad un drastico decremento delle prestazioni. Una soluzione al problema risulta spesso l’acquisto di hardware più potente ma costoso.

Vi sono però un paio di soluzioni alternative che molti siti ormai adottano e che è bene siano conosciute da chiunque.

La prima soluzione è l’utilizzo di programmi che accellerano l’esecuzione del codice nativo, migliorando spesso drasticamente i tempi di compilazione dei sorgenti. Il funzionamento è abbastanza semplice: salvano in memoria il codice intermedio generato dall’interprete per un determinato script, lo ottimizzano e lo restituiscono ad ogni richiesta dello script in questione. Le soluzioni per PHP sono molte, alcune commerciali altre gratuite. Personalmente utilizzo phpAcelerator, ma esistono valide alternative come lo Zend Optimizer (che ottimizza file codificati con Zend Encoder) oppure Turck MMCache. Da prendere in considerazione anche il package PECL APC.

Questa soluzione porta ottimi miglioramenti delle prestazioni, che possono essere notevolmente incrementati sfruttando delle pratiche di caching sui dati elaborati e sulle pagine generate. Difatti accade spesso che alcune pagine vengano accedute migliaia di volte dai visitatori, e che queste pagine richiedano svariate operazioni di calcolo per restituire risultati che cambiano raramente. Per esempio spesso ci si trova a dover effettuare operazioni su database ed elaborazioni delle template per rendere il risultato in modo corretto. Salvando lo stato finale dei dati elaborati è possibile ridurre notevolmente il carico di lavoro del server ed i tempi di elaborazione. I sistemi di caching sono spesso relativi a determinati ambiti, ma spesso le soluzioni proposte si focalizzano sul salvataggio dei dati recuperati da database e sul salvataggio dell’output.

Ora utilizzo una libreria fatta in casa, ma ho provato varie soluzioni: abbiamo jpCache per esempio, oppure UnEarth. Anche i package Cache e Cache_Lite di PEAR sono ottimi esempi e risultano utili in molte situazioni. Ma i sistemi sono talmente tanti che trovare quello adatto alle proprie esigenze risulterà  quasi un impresa!

Tempo fa ho scritto anche un semplice articolo riguardo il caching. Magari a qualcuno potrebbe interessare …

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
2 CommentiDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *

Una alternativa interessante, praticata da un sistema editoriale (GPL) che sto usando, e' la generazione statica delle pagine web a partire dei dati presenti nel database. Nella parte amministrativa si lavora su database, poi si "pubblica" il sito e tutte le parti modificate vengono "rigenerate", mettendo insieme layout grafico e contenuti aggiornati. Il risultato sono semplici pagine html, dalle prestazioni insuperabili... senza contare la facilita' con cui si fa un mirror del sito su un altro server...

Lorello
Lorello

a titolo informativo, Turk é stato abbandonato tempo fa, adesso si chiama eAccelerator, gratuito e fino a poco tempo fa migliore persino di Zend. Non a caso Zend ha assunto il suo maggiore sviluppatore o ideatore. http://eaccelerator.net/HomeUk

andr3a
andr3a