Gestion des caches
|
La fonction ~uncache() supprime le cache pour les pages passées en arguments.
Exemple :
// Supprime unepage.html du cache
uncache("/unepage.html")
// Supprime tout le cache
uncache("/")
Cette fonction permet d'effacer des fichiers du cache de page en fonction de masques de répertoires et de fichiers . Elle prend trois paramètres:
- Le répertoire à partir duquel il faut effacer des fichiers
- Le masque pour les répertoires
- Le masque pour les fichiers
Exemple pour effacer de tous les répertoires nommés thumbs les fichiers se terminant par .jpg:
~uncachemask("/","/^.*\/thumbs$/","/.*\.jpg$/")
Cette fonction permet de modifier la date d'expiration d'une page en cache (la valeur par défaut est fixée dans config.php).
Exemple :
// Le cache sera valable durant 2 heures
~set_expiretime(7200)
Cette fonction n'a aucun effet lorsque que le cache de page est configuré à la racine de Templeet ET que le système d'expiration des pages n'est pas utilisé ET que soit les pages dynamiques de Templeet ne sont pas appelées soit la page /templeet/expire.php n'est pas appelée périodiquement.
La fonction ~includewithcache() fait un ~include classique, mais en plus, il vérifie si cet include n'a pas déjà été caché. S'il n'est pas déjà présent en cache, il le crée pour une future utilisation.
La fonction ~uncache_include() supprime le cache pour les 'include' passés en arguments.
Exemple :
// Supprime tout le cache des 'include'
~uncache_include("/")
Cette fonction permet de modifier la durée d'expiration par défaut de la page courante incluse avec includewithcache.
Exemple :
// Le cache de includewithcache() sera valide durant 2 heures
~set_includeexpiretime(7200)
Par défaut cette valeur sera appliquée également aux pages incluses. Pour désactiver ce fonctionnement et utiliser la valeur par défaut pour les pages incluses il suffit de positionner dans le fichier templeet/config.php
$config['includecache_expiretime_inherit'] = 0;
Lorsque l'on travaille avec un site dont le cache de page est à la racine, une fois qu'un page est en cache elle est appelé directement par Apache sans passer par Templeet.Il est donc nécessaire d'effacer les pages du cache pour pouvoir voir les mises à jour éventuelles.
Cette gestion peut se faire de deux manières:
- Soit lors d'une mise à jour, l'outil de mise à jour est programmé pour effacer la ou les pages concernées par la mise à jour.
- Soit Templeet est configuré pour gérer l'expiration des pages
La première méthode est la plus efficace mais également la plus difficile à mettre en œuvre puisqu'il faut programmer ses templates pour procéder à un effacement judicieux des pages en utilisant les fonctions uncache et uncachemask.
Pour utiliser la seconde méthode il faut avoir choisi à l'installation l'option Utilisation du système d'expiration de pages . Quand cette option est utilisée, à chaque appel d'une page d'ynamique de Templeet, en fonction du temps imparti restant au processus, Templeet va effacer du cache les pages arrivées à expiration.
Il est également possible de procéder à l'expiration des pages en appelant de manière périodique l'URL /templeet/expire.php avec le mot de passe en paramètre GET. Le mot de passe d'expiration se configure dans templeet/config.php avec le paramètre expirepassword.
Exemple:
http://www.example.com/templeet/expire.php?pass=monmotdepasse
Sous unix, pour faire une expiration de page toutes les 5 minutes, on pourra donc insérer dans un crontab une commande du type :
*/5 * * * * wget "http://www.example.com/templeet/expire.php?pass=monmotdepasse" -O /dev/null
A chaque appel de l'expiration, que ce soit par le biais d'une page dynamique dans Templeet ou bien par l'appel de expire.php, SEULES les pages arrivées à expiration sont effacées.
Le crontab n'a pas besoin de se trouver sur la machine hébergeant Templeet
Les deux méthodes de gestion du cache de page sont utilisables conjointement.