CakePHP: una funzione per eliminare i files da tmp/cache

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

CakePHP utilizza un sistema interno di caching degli oggetti per velocizzare le operazioni più comuni. In automatico si occupa del caching di modelli, filepath e traduzioni (quelle dei files .po). In aggiunta è possibile configurare il caching per altri tipi di oggetto, tra cui le views, i css e files js. Eseguendo degli aggiornamenti al codice e ai files capita spesso di vedere il software sviluppato in cake comportarsi ancora come quello "non aggiornato". Questo accade in quanto i files della cartella cache hanno una durata più lunga e non vengono aggiornati subito dopo la modifica. La soluzione a questo problema è quella di cancellare a mano i files contenuti nelle cartella tmp/cache/models, tmp/cache/persistent, ecc... Per non perdere tempo a ripetere la stessa operazione ad ogni aggiornamento è possibile utilizzare una funzione per farlo in automatico:


function adminClearCache() {
    $cachePaths = array('js', 'css', 'views', 'persistent','models');
    foreach($cachePaths as $config) {
        clearCache(null, $config);
    }
}

Definendo il tipo di oggetti nell'array $cachePaths la funzione si occuperà di cancellare i relativi files. Durante una fase di sviluppo nella quale si eseguono molti cambiamenti potrebbe essere opportuno richiamare tale funzione all'interno del callback beforeFilter() del controller (o dell'app_controller) per farla eseguire ad ogni refresh di pagina. Naturalmente ciò va a scapito delle prestazioni rallentando l'applicazione in quanto gli oggetti vengono cancellati e poi ricreati ad ogni chiamata, quindi bisognerà eliminare i riferimenti ad adminClearCache prima della fase di produzione.


Commenti