Caching: un metodo efficace per velocizzare i tempi di caricamento
Code Igniter consente di memorizzare le pagine Web in cache per ottenere il massimo delle prestazioni.
Sebbene il framework sia di per sé abbastanza veloce (qui una panoramica esaustiva su tempi di caricamento, numero di richieste al secondo, utilizzo di memoria e risorse, e inclusione di file di alcuni tra i maggiori framework PHP disponibili), la quantità di informazioni dinamiche visualizzate nelle pagine sarà correlata direttamente alle risorse del server, alla memoria e ai cicli di elaborazione utilizzati, parametri che influiscono sulla velocità di caricamento della pagina.
Memorizzando in cache le pagine Internet dinamiche, poiché vengono salvate nel loro stato "rendered" (lo stato finale che viene stampato nel codice HTML e che verrà interpretato dal browser), si possono ottenere prestazioni simili a quelle delle pagine Web statiche.
Il caching in pratica
Il caching può essere attivato per ogni singola pagina su cui vogliamo applicarlo, impostando anche la durata di tempo in cui la pagina dovrà rimanere memorizzata nella cache prima di essere aggiornata (refresh della cache).
Il funzionamento della cache in Code Igniter è molto semplice: quando una pagina su cui è applicata la cache viene caricata la prima volta, il relativo file di cache verrà generato, riempito con l'output finale e memorizzato nella directory dedicata alla cache: application/cache
.
Alle successive chiamate, non sarà più la dinamica precedente ad essere azionata, ma verrà semplicemente recuperato il file statico memorizzato in precedenza ed inviato al browser. Se invece, il tempo di caching è terminato (expiration), questo verrà eliminato, aggiornato, e solo allora inviato nuovamente al browser.
Usare il caching
Per attivare il caching, occorre utilizzare semplicemente il metodo cache della classe Output:
$this->output->cache($minutes);
dove il parametro $minutes
indica ovviamente il numero di minuti in cui la pagina deve essere memorizzata in cache prima di essere aggiornata. Questo metodo può essere chiamato in qualsiasi posizione all'interno del Controller, il suo funzionamento non dipende assolutamente dall'ordine in cui appare o dalla specifica posizione in cui viene richiamato, quindi può essere utilizzato liberamente dove sembra più logico nel contesto del codice. La cache verrà attivata una volta che la riga di codice precedente viene collocata in un Controller.
Alcune note sul caching
Dato che, come anticipato, Code Igniter permette di gestire l'output in maniera differente dalla modalità standard, è bene ricordare che il caching funzionerà solo se il Controller genera contenuto attraverso una View. Se si dovessero impostare dei parametri di configurazione che vanno ad impattare sul tipo di output che viene generato, bisognerà cancellare manualmente i file di cache.
Ultima nota: dato che la cache è di fatto una procedura di lavoro con i file, per funzionare correttamente la directory in cui vengono memorizzati i file (application/cache
) deve essere ovviamente scrivibile.
Cancellare la cache
Se per qualsiasi motivo non si desidera più memorizzare un determinato file in cache, basterà rimuovere la chiamata al metodo output->cache
, e il relativo file non verrà rigenerato al momento della sua scadenza.
Se invece si desidera eliminare il file di cache istantaneamente o all'attivazione di un determinato evento, si dovrà utilizzare il metodo delete_cache
della classe Output
. Senza parametri in ingresso, il metodo cancellerà il file di cache relativo all'URL corrente, altrimenti quest'ultimo potrà essere specificato manulemente tramite una stringa:
$this->output->delete_cache();
$this->output->delete_cache('/mio/percorso');