Files
smarty/docs/id/programmers/caching/caching-setting-up.xml
2008-12-23 20:32:55 +00:00

209 lines
6.6 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
<sect1 id="caching.setting.up">
<title>Menyiapkan Cache</title>
<para>
Hal pertama yang dilakukan adalah menghidupkan cache dengan menyetel <link
linkend="variable.caching">
<parameter>$caching</parameter></link><literal> = 1 (atau 2)</literal>.
</para>
<example>
<title>Menghidupkan cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 1;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Dengan menghidupkan cache, fungsi panggil ke
<literal>display('index.tpl')</literal> akan membuat template seperti
biasa, tapi juga menyimpan duplikat dari outputnya ke sebuah file
(duplikat cache) dalam
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>.
Panggilan berikutnya ke <literal>display('index.tpl')</literal>, duplikat cache
akan dipakai daripada membuat template kembali.
</para>
<note>
<title>Catatan Teknis</title>
<para>
File dalam
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
diberi nama mirip dengan nama template.
Meskipun berakhir dalam ekstensi <filename>.php</filename>, ini tidak
dimaksudkan dijalankan secara langsung. Jangan edit file ini!
</para>
</note>
<para>
Setiap halaman yang di-cache memiliki batasan usia yang ditentukan oleh
<link linkend="variable.cache.lifetime"><parameter>$cache_lifetime</parameter></link>.
Nilai standarnya adalah 3600 detik atau satu jam. Setelah itu waktu berakhir,
cache dibuat ulang. Dimungkinkan untuk memberikan cache individual memiliki
waktu berakhirnya dengan menyetel
<link linkend="variable.caching"><parameter>$caching</parameter></link><literal>=2</literal>.
Lihat <link
linkend="variable.cache.lifetime"><parameter>$cache_lifetime</parameter></link>
untuk lebih jelasnya.
</para>
<example>
<title>Menyetel $cache_lifetime per cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 2; // usia per cache
// set cache_lifetime untuk index.tpl ke 5 menit
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// set cache_lifetime untuk home.tpl ke 1 jam
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// CATATAN: setelan $cache_lifetime berikut tidak akan bekerja saat $caching = 2.
// Usia cache untuk home.tpl sudah disetel ke 1 jam, dan tidak akan memperhatikan
// nilai lagi $cache_lifetime.
// Cache home.tpl masih akan berakhir setelah 1 jam.
$smarty->cache_lifetime = 30; // 30 seconds
$smarty->display('home.tpl');
?>
]]>
</programlisting>
</example>
<para>
Jika <link linkend="variable.compile.check">
<parameter>$compile_check</parameter></link> dihidupkan,
setiap file template dan file config yang terkait dengan file cache diperiksa
modifikasinya. Jika setiap file sudah dimodifikasi sejak cache dibuat, cache
segera dibuat ulang. Ini adalah beban kecil untuk performansi optimal, set
<link linkend="variable.compile.check"><parameter>$compile_check</parameter>
</link> ke &false;.
</para>
<example>
<title>Menghidupkan $compile_check</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 1;
$smarty->compile_check = true;
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Jika <link linkend="variable.force.compile">
<parameter>$force_compile</parameter></link> dihidupkan,
file cache akan selalu dibuat. Ini efektif mematikan cache.
<link linkend="variable.force.compile"><parameter>$force_compile</parameter>
</link> biasanya hanya untuk keperluan
<link linkend="chapter.debugging.console">debugging</link>,
cara yang lebih efisien mematikan cache adalah menyetel <link
linkend="variable.caching"><parameter>$caching</parameter>
</link><literal> = 0</literal>.
</para>
<para>
Fungsi <link linkend="api.is.cached"><varname>is_cached()</varname></link>
dapat digunakan untuk menguji jika template memiliki cache yang benar atau
tidak. Jika anda memiliki template yang di-cache yang memerlukan hal
seperti pengambilan database, anda bisa menggunakan ini untuk melewati
proses itu.
</para>
<example>
<title>Menggunakan is_cached()</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 1;
if(!$smarty->is_cached('index.tpl')) {
// Cache tidak tersedia, lakukan penempatan variabel di sini.
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
?>
]]>
</programlisting>
</example>
<para>
Anda dapat memelihara bagian halaman dinamis dengan fungsi template <link
linkend="language.function.insert"><varname>{insert}</varname></link>.
Katakanlah seluruh halaman dapat di-cache kecuali untuk iklan yang
ditampilkan di bawah halaman. Dengan menggunakan fungsi
<link linkend="language.function.insert"><varname>{insert}</varname></link>
untuk iklan, anda bisa memelihara elemen ini dinamis dalam konten yang
di-cache. Lihat dokumentasi pada
<link linkend="language.function.insert"><varname>{insert}</varname></link>
untuk lebih jelas dan contohnya.
</para>
<para>
Anda bisa membersihkan semua file cache dengan fungsi<link
linkend="api.clear.all.cache"><varname>clear_all_cache()</varname></link>,
atau file cache individual
<link linkend="caching.groups">dan grup</link> dengan fungsi <link
linkend="api.clear.cache"><varname>clear_cache()</varname></link>.
</para>
<example>
<title>Membersihkan cache</title>
<programlisting role="php">
<![CDATA[
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 1;
// bersihkan hanya cache untuk index.tpl
$smarty->clear_cache('index.tpl');
// bersihkan semua file cache
$smarty->clear_all_cache();
$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
-->