[2008-11-23] curlyBrackets: nové značky {cache} … {/cache}
- David Grudl
- Nette Core | 8218
Přidal jsem do filtru curlyBrackets nové značky
{cache} ... {/cache}
, pomoci kterých lze označit části
šablony, které se mají ukládat do cache. Kešování je tak možno velmi
snadno doplnit i do vykreslovací části aplikace. Funkce je zatím
experimentální.
Označené části se automaticky invalidují, když se změní šablona; a to včetně i všech případných inkludovaných souborů.
Dále je podporováno vnořování značek {cache}. Části šablony se pak invalidují, když se invaliduje kterákoliv vnořená část.
Jako parametry je možné uvést invalidační tagy (více v dokumentaci):
{cache "item/$id", "comments"}
<h1>{$title}</h1>
{include 'spot.phtml'}
{include 'comments.phtml'}
{/cache}
- Tomik
- Nette Evangelist | 485
Moc pěkné! Hlavně to přesouvá kešování tam, kde je potřeba, tedy do šablon. Je tedy možné toto řešit již v nich. Co mě ale napadlo:
Co udělat i něco jako {nocache}, tedy celá stránka (či kus stránky by se kešoval, jen její část mezi {nocache} a {/nocache} nikoli), protože nyní pokud mám stránku a v ní čtyři místa, která nechci kešovat musím 5× uvádět invalidační tagy, zatímco by to šlo uvést pouze jednou, tedy to značky {cache}, a pak pomocí značek {nocache} – či jinak pojmenovaných – označit co nechci kešovat. Snad by to nemuselo být tak náročné na implementaci (zřejmě by se to dělalo tak, že by se v místě kde začíná značka {nocache} ukončila značka {cache} a v místě, kde {nocache} končí zase začala se stejným invalidačním tagem.
Možná už je to zbytečná „fičura“, ale napadlo mě, že by to celé definování kešování přímo v šablonách velice usnadnilo.
Editoval Tomik (23. 11. 2008 20:14)
- David Grudl
- Nette Core | 8218
Tomik napsal(a):
Moc pěkné! Hlavně to přesouvá kešování tam, kde je potřeba, tedy do šablon.
No – jak se to vezme. Záleží, jak je aplikace napsaná. Pokud leží hlavní zátěž v místě plnění šablony, tak takové kešování moc nepomůže. Pokud naopak šabloně předáme vazbu na model, který data vrací až „on demand“ nebo-li „lazy“, tak je kešování naopak velmi efektivní.
Samozřejmě velký přínos to může mít pro generování odkazů, (nevyplněných) formulářů atd.
Co udělat i něco jako {nocache}, tedy celá stránka (či kus stránky by se kešoval, jen její část mezi {nocache} a {/nocache} nikoli), protože nyní pokud mám stránku a v ní čtyři místa, která nechci kešovat musím 5× uvádět invalidační tagy, zatímco by to šlo uvést pouze jednou, tedy to značky {cache}, a pak pomocí značek {nocache} – či jinak pojmenovaných – označit co nechci kešovat. Snad by to nemuselo být tak náročné na implementaci (zřejmě by se to dělalo tak, že by se v místě kde začíná značka {nocache} ukončila značka {cache} a v místě, kde {nocache} končí zase začala se stejným invalidačním tagem.
Nad tím jsem taky uvažoval, uvidíme co se víc osvědčí.
- Jan Tvrdík
- Nette guru | 2595
David Grudl napsal(a): Funkce je zatím experimentální.
Jaký je současný statut této funkce?