mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-21 08:25:19 +02:00
193 lines
6.0 KiB
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
|
|
-->
|