Smarty Template Engine 35.díl - Nastavení II.
V tomto díle budeme pokračovat v ukázce nastavení, tentokrát v nastavení pro cachování šablon.
compile_check
Velice důležita proměnná, která z dělá ze Smarty právě Smarty. Řeč je o tzv. kompilaci šablon. Nebo-li. Při každém dotazu serveru na některou šablonu se podívá Smarty právě do složky defalutně nastavené pro cache šabon jako: 'compile_check' a porovná časové razítko cachované šablony s tím aktuálním (fce now). V případě, že je toto razítko zastaralé, překompiluje celou šablonu znovu do výstupu, přepíše ji v cachovací složce a updatuje časové razítko šablony. To vše má smysl urychlit práci Smarty a načítání šablon a děje se tak v případě, že je tato proměnná nastavena na defaultní záznam, tedy na: 'TRUE'.
Právě tato proměnná totiž nastavuje, zda má Smarty kontrolovat aktuálnost překompilovaných šablon, či nikoliv. K čemu je pak tedy takové nastavení vhodné? V případě, že už máte práci nad systémem hotovou a používáte neměnou – statickou prezentaci, můžete dále urychlit práci celého stroje o nějaké ty milisekundy tím, že právě tuto proměnnou nastavíte na: 'TRUE'. V takovém případě se tedy stroj nebude obtěžovat kontrolovat časová razítka a v případě, že je další proměnná 'caching' také nastavena na TRUE, načte bez okolků aktuální rekompilovanou šablonu z tomu určeného adresáře.
POZOR: Nedá se použít u produkčních stránek, tedy stránek generovaných s rozdílným výsledkem z databáze. V takovém případě by se Vám totiž neustále zobrazovala pouze prvně cachovaná stránka!!
hlavicka.php
$smarty->compile_check = true;
force_compile
Jde o jakési hrubé nastavení cachování šablon při každém načtení šablony. Tzn. navzdory nastavení proměnné 'compile_check' bude při svém nastavení na TRUE (defaultně je nastaveno na FALSE) překompilovávat šablony do PHP v cache umístění na každém svém volání. Proměnnou 'compile_check' tím tedy přepíše hrubou silou. To ovšem platí pouze v případě, že proměnná 'caching' je nastavena na TRUE.
Toto nařízení se nedoporučuje používat u zaběhnutého projektu, kerý již není ve větší míře vyvíjen, z důvodu zvyšené náročnosti na dobu načítání stránky.
hlavicka.php
$smarty->compile_check = false;
$smarty->force_compile = true;
caching
Další z poměrně dosti důležitých proměnných. Tato nastavuje, zda Smarty má, či nemá cachovat šablony do složky nastavené direktivou 'cache_dir'. Defaultně je nastaveno na 0, tedy false. Cachování na rozdíl od re-kompilace vygeneruje výchozí output šablony a nastaví jí určitou časovou známku.
O samotném cachování jako prostředku ke zrychlenému načítání šablon si budeme povídat v některém z příštích dílů.
Hodnota 1 nastavuje povolené cachování s použitím expirační časové známky nastavené direktivou 'cache_lifetime'.
Hodnota 2 nastavuje 'cache_lifetime' na na čas generování šablony.
hlavicka.php
$smarty->caching = false;
cache_dir
Tato proměnná nastavuje cestu k umístění složek, v kterých bude Smarty vyhledávat cachované šablony. Defaultně je tato složka nastavena na složku: 'cache', čímž je myšleno umístění od exekutivního skriptu. Tato složka musí mít nastavena práva pro zápis serverem, tedy alespoň 775.
Místo tohoto nastavení se dá také použít direktiva 'use_sub_dirs' pro kontorlu cachování.
Nedoporučuje se umístění složky do root dokumentů.
hlavicka.php
$smarty->cache_dir = './cache';
cache_limit
Nastavuje délku platnosti nově generovaných cachovaných šablon, jejich validitu. Pokud se při použití šablony zjistí, že aktuální časové razítko překračuje expiraci cachované šablony, překompiluje se. Délka se zadává v sekundách.
Podmínkou je nastavení direktivy 'cache_lifetime' na hodnoty '1' nebo '2'.
Nastavení na '-1' znamená, že doba expirace šablon je neomezená.
Nastavení n '0' vyžaduje překompilovaní šablony při jejím každém volání. Hodí se v případě testování cachování šablon.
V případě, že je direktiva 'force_compile' povolena, postrádá jiné nastavení této proměnné než '0' smysl.
V této ukázce nastavíme platnost cachovaných šablon na 64000 sekund, tedy na cirka 17.6 hodin.
hlavicka.php
$smarty->cache_limit = '64000';
cache_handler
Tato proměnná odkazuje na umístění alternativního řešení cachování proměnných, respektive na naší funkci, která cachování řeší.
cache_modifide_check
Pokud tuto proměnnou nastavíme ne TRUE, bude respektovat změny šablony při přesměrování stránky pomocí funkce 'Header()'. V případě, že při posledním použití cachované šablony nedojde k změně šablony, nastavíse se hlášení: '304: not modifided'. Funguje pouze u šablone bez funkce '{insert}'.