Raccourcis : Contenu - rubriques - sous rubriques
EN FR

jCache est une classe permettant de stocker des données dans un système de cache. Le système repose sur des pilotes pour les accès aux données. Il est donc possible d’utiliser pour le stockage des données, soit une base de données, soit un système de fichiers ou soit memcache .

Configuration

Pour utiliser jCache, il faut d'abord spécifier les paramètres de configuration du système dans le fichier profiles.ini.php situé dans var/config/. Voir le chapitre sur l'utilisation de ce fichier profiles.ini.php.

Vous pouvez définir plusieurs configurations du système, que l'on nomme “profils”. Ainsi vous pouvez définir des configurations pour le site de production, le site de développement par exemple.

Le type de connexion à indiquer dans les noms des sections de profiles.ini.php est jcache.

Chaque profil doit indiquer au moins ces trois paramètres :

  • driver : indique le pilote à utiliser.
  • enabled : permet d'indiquer si le cache pour ce profil est actif (1) ou non (0). Utile en développement ou débuggage.
  • ttl : indique le temps d’expiration des données (0 signifie n’expire jamais). Vous pouvez indiquer une durée en secondes, un timestamp UNIX ou encore une date textuelle au format US.
  • automatic_cleaning_factor : indice de nettoyage automatique du système de cache.

Un profil peut contenir d'autres paramètres, en fonction du pilote utilisé.

Voici un exemple dans le fichier profiles.ini.php :


[jcache]
default = foo

[jcache:foo]
enabled = 1
driver = file
ttl = 0
automatic_cleaning_factor = 0
; répertoire où stocker les données (par défaut 'temp/yourapp/cache/')
;cache_dir =
file_locking = 1
directory_level = 0
directory_umask = 0700
file_name_prefix = "jelix_cache"
cache_file_umask = 0600

Pilote memcache

Il utilise l'API memcache de PHP (et non pas memcached).

Paramètres possibles :

  • driver=memcache
  • servers : liste de serveurs memcached.

[jcache:mymemcache]
driver=memcache
ttl=360
enabled=1
servers = memcache_host1:11211,memcache_host2:11211,memcache_host3:11211

Pilote file

Le cache est stocké dans des fichiers.

Paramètres possibles :

  • driver=file
  • cache_dir : le répertoire où les données sont stockées.
  • file_locking : indique s’il y a verrouillage des fichiers (1) ou non (0).
  • directory_level : niveau d’arborescence des répertoires du système de cache.
  • directory_umask : attributs utilisés pour les répertoires.
  • file_name_prefix : préfixe des noms de fichiers du système de cache.
  • cache_file_umask : attributs utilisés pour les fichiers.

Pilote db

Ce pilote utilise une table SQL pour stocker les valeurs de cache. L'installateur de jelix crée la table nécessaire quand l'application l'utilise. Cependant, pendant le developpement, vous devez vous même créer la table. Utilisez l'un des scripts SQL dans lib/jelix/core-modules/jelix/install/sql/install_jcache.schema.* pour créer la table.

Paramètres possibles :

  • driver=db : la valeur est "db".
  • dao : un sélecteur vers le fichier dao que vous voulez utiliser. Par défaut, "jelix~jcache".
  • dbprofile : profil de connexion jDb à utiliser .

Utilisation

jCache est la classe principale du système de cache. Toutes ses méthodes sont statiques. Elle effectue un bon nombre d’opérations comme stockage, suppression, récupération de données. Vous appellerez ces méthodes quand bon vous semble.

  • jCache::get($key): Pour récupérer une valeur.
  • jCache::set($key, $value, $ttl): pour stocker ou modifier une valeur. $ttl est optionnel
  • jCache::delete($key): pour effacer une valeur
  • jCache::increment($key): incremente une valeur (N.B. : la valeur est réduite à sa partie entière - si elle a une partie décimale - puis incrémentée)
  • jCache::decrement($key): decremente une valeur (N.B. : la valeur est réduite à sa partie entière - si elle a une partie décimale - puis décrémentée)
  • jCache::add($key, $value): pour stocker une nouvelle valeur. Retourne false si la clé existe déjà
  • jCache::replace($key,$value, $ttl): pour changer une valeur d'une clé existante. Retourne false si la clé n'existe pas. $ttl est optionnel.
  • jCache::garbage(): efface toutes les valeurs expirées
  • jCache::flush(): efface tout le cache.
  • jCache::call($fn, $fnargs, $ttl): utilise le nom et les arguments de la fonction donnée comme clé de la valeur que retourne la fonction. Si la clé existe déjà, renvoi la valeur du cache, sinon appelle la fonction et stocke la valeur retournée dans le cache.

Toutes ces méthodes statiques acceptent un nom de profile jcache en dernier argument.