Jak zjistit v presenteru, jestli je šablona v cache?
- net-vor
- Člen | 35
Relativně vyčerpávající odpověď máš v příručce programátora. Jinak kontroluje se to přesně, jak uvádíš:
- mprokes
- Člen | 10
arron napsal(a):
…a uvidis co Ti z toho vyleze. Z toho uz se asi bude dat poznat, jak to spravne testovat :-)
Jojo, to už jsem taky zkoušel, vyleze tohle: :-)
Ale stále jsem nepřišel na to, jak získat klíč, pod kterým je onen
kousek šablony kešovaný.
Koukal jsem i jak CachingHelper (& spol.) klíč počítají, že bych si
ho mohl vygenerovat, ale stále doufám, že existuje nějaký jednodušší
způsob, jen mě nenapadá jaký… :-)
- arron
- Člen | 464
Vyki napsal(a):
To by urcite slo, ale prijde mi to takove hodne fuj ;-)
Uvazoval bych asi o tom, pouzit nejaky jiny typ cache nez primo v sablone, popripade to nejak nakombinovat (polozil bych si otazku, je pomalejsi pripravit ta data, anebo vygenerovat ten vystup v sablone? a pak bych se podle toho zaridil…).
- mprokes
- Člen | 10
Samozřejmě můžu cachovat data v presenteru a pak při jejich změně invalidovat i šablonu pomocí tagu, ale myslel jsem, že by to takhle bylo elegantnější. Invalidoval bych jen šablonu a na základě toho bych znovu načetl data a cache by figurovala jen na jednom místě.
Význam má pro mě cachování šablony (data získám v tomto případě rychleji), a že bych se při tom nedotazoval zbytečně na data byla jen taková třešnička na dortu. :-)
V každém případě děkuju za reakce, jdu kešovat v presenteru… :-)
- Michalek
- Člen | 211
Já mám tedy makro cache upravené již z kdysi dávno, ale dnes by mělo už fungovat stejně, takže nějak takhle, ne? Kombinace všeho co tady již bylo postupně zmíněno ;-)
template.phtml
{cache 'ukladam'}
neco co cachujeme v sablone
{/cache}
presenter.php
$templateCache = Environment::getCache('Nette.Template.Cache');
if !isset($templateCache['ukladam']) {
// whatever
}
Editoval Michalek (9. 11. 2010 19:01)
- mprokes
- Člen | 10
Michalek napsal(a):
Podobný zápis jsem zkoušel hned na začátku, ale nefunguje – ‚ukladam‘ podle mě není klíč, pouze klíč ovlivňuje (nebo jsem slepej a dělám něco blbě :-) )
btw: Zkusil jsem pořádně otestovat náročnost načítání dat, a zjistil jsem, že se jedná o zanedbatelnou hodnotu, takže budu kešovat pouze šablonu a data budu načítat stále, i když je dále nevyužiju. A vyhnu se tak alespoň problémům s invalidací keše v presenteru, pokud se mi šablona invaliduje automaticky při změně svého obsahu (tenhle problém by nenastal u Vykiho řešní). :-)
Editoval mprokes (9. 11. 2010 21:46)
- arron
- Člen | 464
Porad jsem tak premyslel nad prispevkem od Vikiho, jehoz reseni jsem tak nehezky zdrbnul…a tu me tak napadlo, co takhle do sablony predat nejakou anonymni funkci?
Je to spise takovy pseudokod a nezkousel jsem to v praxi, ale v zasade nevidim duvod, proc by to nemohlo fungovat (jo a diky Viki za inspiraci;-))
A jeste takovy dotaz, ktery mi lezi v hlave uz docela dlouho a ktery se
diky tomuhle vlaknu konecne dostane ven. K cemu vlastne spravne pouzit makro
{cache}
, kdyz pak stejne nacitam zbytecne ta data? Jedine me napada
to cachovat oddelene, ale to zase asi nedava tak uplne smysl… Na co je tohle
makro tedy primarne urcene?
Editoval arron (9. 11. 2010 21:53)
- Vyki
- Člen | 388
arron napsal(a):
A jeste takovy dotaz, ktery mi lezi v hlave uz docela dlouho a ktery se diky tomuhle vlaknu konecne dostane ven. K cemu vlastne spravne pouzit makro{cache}
, kdyz pak stejne nacitam zbytecne ta data? Jedine me napada to cachovat oddelene, ale to zase asi nedava tak uplne smysl… Na co je tohle makro tedy primarne urcene?
Já to používám k cachování menu. Invaluduje so změna v katalogu.
- Filip Procházka
- Moderator | 4668
no to záleží všechno na použití :)
Tohle je samozřejmě jedna z cest, jak je čistá posuďte sami, např i to s tou closurou není špatný nápad, ale už to hodně deleguje moc logiky do templaty
Asi by nebylo špatný mít nějaký jednoduchý model, který by se šabloně předal a obaloval by volání takových funkcí
gist: https://gist.github.com/670938 :)
Editoval HosipLan (10. 11. 2010 15:49)
- mprokes
- Člen | 10
HosipLan napsal(a):
Teda až tady mi docvaklo, že data fetchuju moc brzo,
data si šablona vytáhne sama, a já jí vlastně ani nepotřebuju testovat :-)
A při změně dat jí prostě invaliduju tagem
A víc řešit nemusím. Taky mi to mohlo dojít o něco dříve… :-)
Editoval mprokes (10. 11. 2010 23:24)