Name
is_cached() — Retourne TRUE
s'il y a un fichier de cache valide pour ce template
Description
bool is_cached(string template,
string cache_id,
string compile_id);
Celà fonctionne seulement si
$caching
est défini àTRUE
, voir aussi la section sur le cache pour plus d'informations.Vous pouvez aussi passer en second paramètre un identifiant de
$cache_id
au cas où vous voudriez plusieurs fichiers de cache pour ce template.Vous pouvez donner un
$compile id
en tant que troisième paramètre. Si vous ne spécifiez pas ce paramètre, le$compile_id
persistant sera utilisé.Si vous ne voulez pas passer un
$cache_id
mais plutôt un$compile_id
, vous devez passerNULL
en tant que$cache_id
.
Note technique
Si is_cached()
retourne TRUE
, il charge en fait le cache existant et
le stocke en interne. Tout appel supplémentaire à
display()
ou
fetch()
retournera ce
contenu stocké en interne
sans tenter de recharger le fichier en cache. Celà évite des problématiques d'accès concurents,
lorsqu'un second processus efface le cache entre l'appel de
is_cached()
et l'appel à
display()
comme dans l'un de nos exemples ci-dessus. Celà signifie également que les appels à
clear_cache()
et les changements de paramètres du cache peuvent n'avoir aucun effet alors que
is_cached()
a retourné TRUE
.
Example 13.19. Exemple avec is_cached()
<?php $smarty->caching = true; if(!$smarty->is_cached('index.tpl')) { //aucun appel à la base de donnée } $smarty->display('index.tpl'); ?>
Example 13.20. Exemple avec is_cached() et plusieurs templates
<?php $smarty->caching = true; if(!$smarty->is_cached('index.tpl', 'FrontPage')) { //appel de la base de données, assignation des variables } $smarty->display('index.tpl', 'FrontPage'); ?>
Voir aussi
clear_cache()
,
clear_all_cache()
et
la section sur le cache.