Files
smarty/docs/ru/programmers/caching/caching-setting-up.xml
freespace e799943aba Converted all line endings from CRLF to LF.
Sorry for such a big commit, but this should be done only once.
And please, don't kill me if I did a stupid thing :)
2004-11-25 23:26:13 +00:00

185 lines
5.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="windows-1251"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: tony2001 Status: ready -->
<sect1 id="caching.setting.up">
<title>Настройка кэширования</title>
<para>
Прежде всего, кэширование необходимо активировать. Это можно сделать,
установив <link linkend="variable.caching">$caching</link> = true (или 1).
</para>
<example>
<title>Включение кэширования</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->display('index.tpl');
]]>
</programlisting>
</example>
<para>
При включенном кэшировании, вызываемая функция display('index.tpl') интерпретирует
шаблон как обычно, но также сохраняет копию вывода в файл (кэшированую копию)
в <link linkend="variable.cache.dir">$cache_dir</link>.
При следующем вызове display('index.tpl'), вместо повторной интерпретации шаблона,
будет использована кешированая копия.
</para>
<note>
<title>Техническое замечание</title>
<para>
Файлы в директории $cache_dir имеют те же имена, что и соответствующие
шаблоны. Их имена оканчиваются расширением ".php", но на самом деле они не являются
выполняемыми php-скриптами. Не редактируйте эти файлы!
</para>
</note>
<para>
Каждая кэшированая страничка существует на протяжении определенного времени,
указанного в <link linkend="variable.cache.lifetime">$cache_lifetime</link>.
Значение по умолчанию равно 3600 секундам или 1 часу. После того, как это время
истекает, кэш обновляется. Существует возможность присвоить каждой
кэшированой страничке собственное время жизни, установив $caching = 2.
Смотрите документацию <link linkend="variable.cache.lifetime">$cache_lifetime</link>
для получения подробных сведений.
</para>
<example>
<title>Установка собственного cache_lifetime для кэшированой копии</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 2; // Срок действия только для этой копии
// устанавливаем cache_lifetime для index.tpl в 5 минут
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// устанавливаем cache_lifetime для home.tpl в 1 час
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// Примечание: следующая $cache_lifetime настройка не будет работать, когда $caching = 2.
// Срок жизни кэша для home.tpl уже был установлен
// в 1 час, и Smarty больше не будет обращать внимание на значение $cache_lifetime.
// Время жизни кэша home.tpl по прежнему будет истекать по прошествию одного часа.
$smarty->cache_lifetime = 30; // 30 секунд
$smarty->display('home.tpl');
]]>
</programlisting>
</example>
<para>
Если включен параметр <link linkend="variable.compile.check">$compile_check</link>,
то каждый файл шаблона и конфигурации, связанный с файлом кэша, проверяется на
наличие изменений. Если один из этих файлов был модифицирован с тех пор, как
кэш был создан, кэш немедленно обновляется. Это незначительно повышает нагрузку,
поэтому, для оптимальной производительности оставьте значение $compile_check
равным false.
</para>
<example>
<title>Включение $compile_check</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');
]]>
</programlisting>
</example>
<para>
Если <link linkend="variable.force.compile">$force_compile</link>
активирован, файлы кэша всегда будут обновляться. Это средство можно
использовать для отключения кэширования во время отладки.
$force_compile обычно используется только в целях отладки, так как более
правильным способом отключения кеширования является установка
<link linkend="variable.caching">$caching</link> = false (или 0).
</para>
<para>
Функция <link linkend="api.is.cached">is_cached()</link> может быть
использована для определения, имеется ли у шаблона работоспособный кэш.
Если у вас есть кэшированый шаблон, которому необходимо, например,
получить выборку из базы данных, вы можете использовать эту функцию,
чтобы пропустить процесс обращения к базе.
</para>
<example>
<title>Использование is_cached()</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
if(!$smarty->is_cached('index.tpl')) {
// Кэш отсутствует, значит присваеваем значения переменным.
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
]]>
</programlisting>
</example>
<para>
Вы можете сделать так, чтобы часть страницы оставалась динамической, даже
если страница кэшируется, при помощи встроенной функции <link
linkend="language.function.insert">insert</link>. Например,
кэшироваться может вся страница, за исключением баннера.
Используя функцию insert для баннера, вы можете сохранять
этот элемент динамичным, внутри кэшированой странички. Смотрите
документацию по <link linkend="language.function.insert">insert</link> для
получения подробностей и примеров.
</para>
<para>
Очистить все файлы кэша можно при помощи функции
<link linkend="api.clear.all.cache">clear_all_cache()</link>, а
конкретный файл кэша (или группу) - вызвав
<link linkend="api.clear.cache">clear_cache()</link> функцию.
</para>
<example>
<title>Очистка кэша</title>
<programlisting>
<![CDATA[
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
// очищаем все файлы кэша
$smarty->clear_all_cache();
// очищаем только кэш шаблона index.tpl
$smarty->clear_cache('index.tpl');
$smarty->display('index.tpl');
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->