SPIP met en cache certains éléments de la base de données pour éviter des appels intempestifs au serveur SQL et pour que l’affichage des pages publiques déjà en cache puisse fonctionner même si le serveur de base de donnée est indisponible. Deux caches sont ainsi créés.
{{{Cache des métas}}}
Le premier est un export complet de la table SQL
spip_meta
. Cette table stocke des paramètres de configuration ou de fonctionnement de SPIP. Ces informations sont à la fois déposées dans la globale
$GLOBALS['meta']
et, à l’exception des données sensibles servant à l’authentification, dans le fichier
tmp/meta_cache.php
.
Ce fichier a une durée de validité définie par
_META_CACHE_TIME
. Il est réécrit lors de l’appel à
ecrire_meta()
ou
effacer_meta()
. La fonction
lire_metas()
elle recalcule
$GLOBALS['meta']
avec les informations de la base de données.
{{{Cache des descriptions SQL}}}
Le second cache concerne la description des tables SQL des bases de données. Ces descriptions sont stockées dans les fichiers
tmp/cache/sql_desc*.txt
, avec un fichier par connecteur de base de données. Ce fichier est créé et utilisé par la fonction
base_trouver_table_dist()
qui sert de base à diverses fonctions PHP en rapport avec les descriptions SQL comme
table_objet()
,
id_table_objet()
,
objet_type()
.
Pour recréer ce fichier de cache, il faut explicitement appeler la fonction
trouver_table()
sans argument :
$trouver_table = charger_fonction('trouver_table','base');
$trouver_table();