Codice personalizzato per aumentare le prestazioni di Drupal

Codice personalizzato per aumentare le prestazioni di Drupal

In questo blog ho già scritto alcuni articoli a proposito delle prestazioni dei siti web. Sappiamo infatti che la velocità di un sito web influisce in maniera significativa sulla qualità del sito stesso. Un sito web veloce è infatti apprezzato dagli utenti a tal punto che anche il motore di ricerca Google tiene in considerazione questa caratteristica in relazione al posizionamento dei risultati delle ricerche.

Nell'articolo "Ottimizzare le prestazioni di un sito web in Drupal" ho indicato alcune delle linee guida generali per procedere con il miglioramento dei tempi di caricamento delle pagine di un sito web realizzato con il CMS Drupal.

In questo articolo voglio invece portare un esempio pratico di come ottimizzare le prestazioni agendo su poche righe di codice.

Ipotizziamo di dover visualizzare un elenco di nomi utenti a partire dai rispettivi User ID (UID).

Drupal mette a disposizione una funzione (user_load) che permette di caricare un oggetto "utente", da questo oggetto si può quindi ricavare il nome dell'utente.

La sintassi (compressa in una riga) è:

$username = user_load($uid)->name;

L'oggetto restituito dalla funzione user_load contiene molte più informazioni di quante realmente ci servono, pertanto si può intuire come ci sia uno spreco di risorse.

Si può quindi valutare l'accesso diretto al database effettuando una interrogazione per ricavare il nome dell'utente.

Ecco un esempio di codice valido per Drupal 7:

$username = db_query("SELECT name FROM {users} WHERE uid = :uid", array(':uid'=> $uid ))->fetchField();

In entrambi gli esempi la variabile $uid contiene l'identificativo dell'utente.

Ottimizzazioni analoghe a quella descritta possono quindi essere utilizzate in siti web con un traffico elevato per diminuire l'uso delle risorse del sistema. Spesso queste tecniche mi sono state di aiuto, come nel caso del blog inerboristeria.com e di altri portali con un traffico di utenti molto elevato.