Codigniter : Activer le cache, changer le dossier de génération et changer le dossier de generation en fonction des controllers

Le framework PHP Codeigniter contient nativement un système de gestion de cache : vous définissez la durée de vie d’une page dans votre controller et le système génère automatiquement un fichier html qui sera affiché à l’internaute tant qu’il n’aura pas expiré.

L’avantage du cache codeigniter 2 (et des systèmes de cache en règle générale) est que vous gagnez énormément en performance d’affichage et la vitesse de chargement : en effet une page qui est ‘cachée’ pendant 1 heure sera exécuté réellement 1 seule fois et pendant les 59 autres minutes, le framework se contentera d’afficher le fichier HTML generé.
Pour résumer, aucune requêtes SQL tant que le fichier en cache est valide et très peu de traitement serveur.

La logique est la suivante :

  • Si le cache est activé
    • Si le fichier html existe
      • Si sa durée de vie n’est pas dépassée, je l’affiche
      • Si sa durée de vie est dépassée, je le rafraîchis
    • Si le fichier n’existe pas, je le re-crée avec les informations mises à jour
  • Si le cache est désactivé, je ne fais rien

Chaque type de page peut être mis en cache ou non, avec une durée de rafraîchissement différente

 

Activer le cache codeigniter

Placez vous dans le controller principal de votre page et inserez le code suivant juste après l’accolade ouvrant : $this->output->cache(n);
‘n’ est à remplacer par le nombre de minutes durant les quelles vous souhaitez garder la page en cache avant qu’elle soit rafraichie

Un exemple concret pour garder une page en cache 5 minutes serait, dans /application/controllers/test_cache.php :

function test_cache()
{

$this->output->cache(5);
//le reste de votre code

}

Pour vérifier que la mise en place du cache est effective, appelez votre page dans le navigateur et regardez si vous avez un fichier qui vient d$etre crée dans le répertoire suivant : /application/cache/

Remarque 1 : vous devez vous assurer que le répertoire system/cache est autorisé en écriture.
Remarque 2 : Si vous désactiver le cache dans votre controller, ce ne sera pris en compte que lorsque le fichier généré sera devenu obsolète

 

Changer le répertoire de destination des pages mises en cache sous codeigniter

L’avantage, c’est que la gestion du cache s’active et se paramètre sur un site web en 5 minutes.
Vous pouvez, en modifiant le fichier /application/config/config.php, changer le dossier de destination des fichiers HTML en attribuant une valeur au tableau $config[‘cache_path’] =  »;

L’inconvénient, c’est que vous ne pouvez pas attribuer des dossier différents en fonction des controllers.

 

Changer le répertoire de destination des pages mises en fonction des controllers

Pour ce faire, il suffira d’écraser la valeur de $config[‘cache_path’] (qui et chargée en début de script) en redéfinissant/écrasant sa valeur directement dans le controller

Un exemple concret pour garder une page en cache 5 minutes dans le répertoire /application/cache/test_cache/ :

function test_cache2()
{

$this->config->config[« cache_path »] = ‘/application/cache/test_cache/’;
$this->output->cache(5);

//le reste de votre code

}

Si vous avez des retours à me faire, n’hésitez pas!

Post Comment