Files
smarty/docs/it/programmers/caching/caching-setting-up.xml

193 lines
6.0 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<sect1 id="caching.setting.up">
<title>Impostare il Caching</title>
<para>
La prima cosa da fare è abilitare il caching. Per farlo bisogna
impostare <link linkend="variable.caching">$caching</link> = true (o 1.)
</para>
<example>
<title>abilitare il caching</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Col caching abilitato, la chiamata alla funzione display('index.tpl')
causa la normale generazione del template, ma oltre a questo salva
una copia dell'output in un file (la copia in cache) nella <link
linkend="variable.cache.dir">$cache_dir</link>. Alla chiamata successiva
di display('index.tpl'), verrà usata la copia in cache invece di
generare di nuovo il template.
</para>
<note>
<title>Nota tecnica</title>
<para>
I file nella $cache_dir vengono chiamati con nomi simili al nome del
template. Sebbene abbiano l'estensione ".php", in realtà non sono
script php eseguibili. Non editateli!
</para>
</note>
<para>
Ogni pagina in cache ha un tempo di vita limitato, determinato da
<link linkend="variable.cache.lifetime">$cache_lifetime</link>. Il
valore di default è 3600 secondi, cioè 1 ora. Dopo questo tempo, la
cache viene rigenerata. E' possibile dare a file singoli il proprio
tempo di scadenza impostando $caching = 2. Consultate la documentazione
di <link linkend="variable.cache.lifetime">$cache_lifetime</link> per i dettagli.
</para>
<example>
<title>impostare cache_lifetime per singolo file di cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 2; // la durata è per singolo file
// impostiamo il cache_lifetime per index.tpl a 5 minuti
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// impostiamo il cache_lifetime per home.tpl a 1 ora
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// NOTA: l'impostazione seguente di $cache_lifetime non funzionerà
// con $caching = 2. La scadenza per home.tpl è stata già impostata
// a 1 ora, e non rispetterà più il valore di $cache_lifetime.
// La cache di home.tpl scadrà sempre dopo 1 ora.
$smarty->cache_lifetime = 30; // 30 seconds
$smarty->display('home.tpl');
?>
]]>
</programlisting>
</example>
<para>
Se <link linkend="variable.compile.check">$compile_check</link> è abilitato,
tutti i file di template e di configurazione che sono coinvolti nel file
della cache vengono verificati per vedere se sono stati modificati. Se qualcuno
dei file ha subito una modifica dopo che la cache è stata generata, il file
della cache viene rigenerato. Questo provoca un piccolo sovraccarico, quindi,
per avere prestazioni ottimali, lasciate $compile_check a false.
</para>
<example>
<title>abilitare $compile_check</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Se <link linkend="variable.force.compile">$force_compile</link> è abilitato,
i file della cache verranno sempre rigenerati. Di fatto questo disabilita
il caching. $force_compile normalmente serve solo per scopi di debug, un
modo più efficiente di disabilitare il caching è di impostare <link
linkend="variable.caching">$caching</link> = false (o 0.)
</para>
<para>
La funzione <link linkend="api.is.cached">is_cached()</link> può essere
usata per verificare se un template ha una cache valida oppure no. Se avete
un template in cache che necessita di qualcosa come una lettura da un
database, potete usare questa funzione per saltare quella parte.
</para>
<example>
<title>uso di is_cached()</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
if(!$smarty->is_cached('index.tpl')) {
// Non c'è cache disponibile, assegnamo le variabili qui.
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Potete mantenere parti di una pagina dinamiche con la funzione del template
<link linkend="language.function.insert">insert</link>. Diciamo che l'intera
pagina può essere messa in cache eccetto un banner che viene visualizzato
in fondo a destra nella page. Usando la funzione insert per il banner, potete
tenere questo elemento dinamico all'interno del contenuto in cache. Consultate
la documentazione su <link linkend="language.function.insert">insert</link> per
dettagli ed esempi.
</para>
<para>
Potete eliminare tutti i file della cache con la funzione <link
linkend="api.clear.all.cache">clear_all_cache()</link>, o singoli
file della cache (o gruppi di file) con la funzione <link
linkend="api.clear.cache">clear_cache()</link>.
</para>
<example>
<title>eliminare la cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = true;
// eliminiamo tutti i file della cache
$smarty->clear_all_cache();
// eliminiamo solo la cache di 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
-->