is_cached <methodsynopsis> <type>bool</type><methodname>is_cached</methodname> <methodparam><type>string</type><parameter>template</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>cache_id</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>compile_id</parameter></methodparam> </methodsynopsis> <para> Возвращает true если существует кэш для указанного шаблона. Работает только в том случае, если значение <link linkend="variable.caching">caching</link> установлено в true. </para> <example> <title>is_cached caching = true; if(!$smarty->is_cached("index.tpl")) { // обращаемся к БД, назначаем переменные } $smarty->display("index.tpl"); ?> ]]> Также вы можете передавать cache id в качестве необязательного второго параметра, если у вас используется множественное кэширование шаблона. Также вы можете передавать compile id в качестве необязательного третьего параметра. Если вы не передадите этот параметр, будет использован текущий $compile_id. Если вы не хотите передавать cache id, но хотите передать compile id, вы должны передать null в качестве cache id. is_cached при множественном кэшировании шаблона caching = true; if(!$smarty->is_cached("index.tpl", "FrontPage")) { // обращаемся к БД, назначаем переменные } $smarty->display("index.tpl", "FrontPage"); ?> ]]> Техническое замечание Если is_cached возвращает true, при этом она загружает кэшированный вывод и хранит его в памяти. Любые последующие вызовы display() или fetch() будут возвращать этот хранимый в памяти вывод и не будут пытаться перезагрузить файл кэша. Это предотвращает неприятную ситуацию, которая может возникнуть если другой процесс очищает кэш между вызовами is_cached и display в предыдущем примере. Это также означает, что clear_cache() и другие изменения настроек кэширования могут не вступить в силу после того, как is_cached вернула true.