Files
smarty/docs/de/programmers/caching/caching-setting-up.xml
2005-12-10 09:27:40 +00:00

196 lines
6.3 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.6 Maintainer: andreas Status: ready -->
<sect1 id="caching.setting.up">
<title>Caching einrichten</title>
<para>
Als erstes muss das Caching eingeschaltet werden. Dies erreicht man, indem
<link linkend="variable.caching">$caching</link> = 1 (oder 2) gesetzt wird.
</para>
<example>
<title>Caching einschalten</title>
<programlisting>
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Wenn Caching eingeschaltet ist, wird der Funktionsaufruf display('index.tpl')
das Template normal rendern, zur selben Zeit jedoch auch eine Datei mit
dem Inhalt in das <link linkend="variable.cache.dir">$cache_dir</link> schreiben
(als gecachte Kopie). Beim nächsten Aufruf von display('index.tpl') wird die
gecachte Kopie verwendet.
</para>
<note>
<title>Technische Bemerkung</title>
<para>
Die im <link linkend="variable.cache.dir">$cache_dir</link>
abgelegen Dateien haben einen ähnlichen Namen wie das Template,
mit dem sie erzeugt wurden. Obwohl sie eine '.php'-Endung
aufweisen, sind sie keine ausführbaren PHP-Skripte.
Editieren Sie diese Dateien NICHT!
</para>
</note>
<para>
Jede gecachte Seite hat eine Lebensdauer, die von <link
linkend="variable.cache.lifetime">$cache_lifetime</link> bestimmt
wird. Normalerweise beträgt der Wert 3600 Sekunden (= 1
Stunde). Nach Ablauf dieser Lebensdauer wird der Cache neu
generiert. Sie können die Lebensdauer pro Cache bestimmen indem
Sie <link linkend="variable.caching">$caching</link> auf 2
setzen. Konsultieren Sie den Abschnitt über <link
linkend="variable.cache.lifetime">$cache_lifetime</link> für
weitere Informationen.
</para>
<example>
<title>'$cache_lifetime' pro Cache einstellen</title>
<programlisting>
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 2; // Lebensdauer ist pro Cache
// Standardwert für '$cache_lifetime' auf 5 Minuten setzen
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// '$cache_lifetime' für 'home.tpl' auf 1 Stunde setzen
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// ACHTUNG: die folgende Zuweisung an '$cache_lifetime' wird nicht funktionieren,
// wenn '$caching' auf 2 gestellt ist. Wenn die '$cache_lifetime' für 'home.tpl' bereits
// auf 1 Stunde gesetzt wurde, werden neue Werte ignoriert.
// 'home.tpl' wird nach dieser Zuweisung immer noch eine '$cache_lifetime' von 1 Stunde haben
$smarty->cache_lifetime = 30; // 30 seconds
$smarty->display('home.tpl');
?>
]]>
</programlisting>
</example>
<para>
Wenn <link linkend="variable.compile.check">$compile_check</link>
eingeschaltet ist, werden alle in den Cache eingeflossenen
Templates und Konfigurationsdateien hinsichtlich ihrer letzten
Änderung überprüft. Falls eine der Dateien seit der Erzeugung des
Cache geändert wurde, wird der Cache unverzüglich neu
generiert. Dadurch ergibt sich ein geringer Mehraufwand. Für
optimale Performance sollte <link
linkend="variable.compile.check">$compile_check</link> deshalb auf
'false' gesetzt werden.
</para>
<example>
<title>'$compile_check' einschalten</title>
<programlisting>
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Wenn <link linkend="variable.force.compile">$force_compile</link> eingeschaltet ist,
werden die Cache-Dateien immer neu generiert und das Caching damit wirkungslos gemacht.
<link linkend="variable.force.compile">$force_compile</link> wird normalerweise nur für die Fehlersuche verwendet.
Ein effizienterer Weg das Caching auszuschalten wäre,
<link linkend="variable.caching">$caching</link> auf 'false' (oder 0) zu setzen.
</para>
<para>
Mit der Funktion <link linkend="api.is.cached">is_cached()</link> kann überprüft
werden, ob von einem Template eine gecachte Version vorliegt.
In einem Template, das zum Beispiel Daten aus einer Datenbank bezieht,
können Sie diese Funktion verwenden, um den Prozess zu überspringen.
</para>
<example>
<title>is_cached() verwenden</title>
<programlisting>
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
if(!$smarty->is_cached('index.tpl')) {
// kein Cache gefunden, also Variablen zuweisen
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Mit der <link linkend="language.function.insert">{insert}</link> Funktion können Sie
Teile einer Seite dynamisch halten. Wenn zum Beispiel ein Banner in einer gecachten Seite
nicht gecached werden soll, kann dessen Aufruf mit <link linkend="language.function.insert">{insert}</link> dynamisch gehalten werden.
Konsultieren Sie den Abschnitt über <link linkend="language.function.insert">insert</link>
für weitere Informationen und Beispiele.
</para>
<para>
Mit der Funktion <link linkend="api.clear.all.cache">clear_all_cache()</link> können
Sie den gesamten Template-Cache löschen. Mit <link linkend="api.clear.cache">clear_cache()</link>
einzelne Templates oder <link linkend="caching.groups">Cache-Gruppen</link>.
</para>
<example>
<title>Cache leeren</title>
<programlisting>
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
// alle Cache-Dateien löschen
$smarty->clear_all_cache();
// nur Cache von 'index.tpl' löschen
$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
-->