Smarty Manual
Prev |  | Next

# is_cached()

is_cached() -- returns true if there is a valid cache for this template

## Description

bool is_cached ( string template [, string cache_id [, string compile_id]])

- This only works if `$caching` is set to `TRUE`, see the caching section for more info.

- You can also pass a `$cache_id` as an optional second parameter in case you want multiple caches for the given template.

- You can supply a `$compile id` as an optional third parameter. If you omit that parameter the persistent `$compile_id` is used if its set.

- If you do not want to pass a `$cache_id` but want to pass a `$compile_id` you have to pass `NULL` as a `$cache_id`.

> Technical Note: If `is_cached()` returns `TRUE` it actually loads the cached output and stores it internally. Any subsequent call to `display()` or `fetch()` will return this internally stored output and does not try to reload the cache file. This prevents a race condition that may occur when a second process clears the cache between the calls to `is_cached()` and to `display()` in the example above. This also means calls to `clear_cache()` and other changes of the cache-settings may have no effect after `is_cached()` returned `TRUE`.

Example 13-1. is_cached()
`<?php $smarty->caching = true; if(!$smarty->is_cached('index.tpl')) { // do database calls, assign vars here } $smarty->display('index.tpl'); ?>`

Example 13-2. is_cached() with multiple-cache template
`<?php $smarty->caching = true; if(!$smarty->is_cached('index.tpl', 'FrontPage')) { // do database calls, assign vars here } $smarty->display('index.tpl', 'FrontPage'); ?>`

See also `clear_cache()`, `clear_all_cache()`, and caching section.

Prev | Home | Next
get_template_vars() | Up | load_filter()