Le cache de requêtes - Zend Framework 1.12 partie 8

Tutorial Application Facebook PHP/JS : Le cache de requêtes.

Publié le 02/10/2013

Listes des taches :

  • - Création du répertoire de cache
  • - Paramétrage du fichier application.ini
  • - Exemple de code de requêtes misent en cache

1 - Création du répertoire de cache

Nous allons créer en racine de notre application un dossier cache qui stockera le résultat de requêtes dans des fichiers caches :

cd /Applications/MAMP/htdocs/next/ mkdir cache sudo chmod -R 777 cache

2 - Paramétrage du fichier application.ini

Ajout des lignes suivantes dans le fichier "APPLICATION_PATH"/application/configs/application.ini, dans la section production :

; Cache resources.cachemanager.default.frontend.name = Core resources.cachemanager.default.frontend.options.caching = true resources.cachemanager.default.frontend.options.lifetime = 3600 resources.cachemanager.default.backend.name = File resources.cachemanager.default.backend.options.cache_dir = APPLICATION_PATH "/../cache"

3 - Exemple de code de requêtes misent en cache

La partie mise en cache des requêtes se passent dans le controler. Dans l’exemple que nous avons choisi, nous nous intéresserons au fichier "APPLICATION_PATH"/application/modules/default/controllers/IndexController.php gérant le portfolio de la home page. Dans la méthode indexAction() nous allons avoir deux variables définissant la cache de la requête et son id :


// action to display list of realisations items
public function indexAction()
{
    $cache = $this->getInvokeArg('bootstrap')->getResource('cachemanager')->getCache('default');
    $cache_id = "index_published_realisations";

    if ( ($result = $cache->load($cache_id) ) === false ) {
        // get published realisations to view
         $result = Next_Model_Realisations::getPublishedRealisation();
         $cache->save($result, $cache_id);
    }
    $this->view->records = $result;
}

Un if va controler si l’id existe pour rediriger vers la cache existante sinon il va refaire la requête et reconstruire le cache de cette dernière.