For Programmers: Free Programming Magazines  


Home > Archive > PHP Smarty Templates > May 2006 > Re: [SMARTY] Smarty book published & available









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: [SMARTY] Smarty book published & available
Joao Prado Maia

2006-05-01, 7:06 pm

Jochem,

> first off - congrats! no doubt it will help to give Smarty
> (a more|an even more) professional 'presence' :-)
>


Thanks! I'm glad that the book is finally published and available to the
public.


> secondly could you indicate how much detail the book contains on Smarty
> caching? I ask because I have some very dynamic sites (with custom
> plugins that retrieve their own data, multilanguage and heavy 'scriptside'
> logic) that could do with [partial] caching but so far I have been unable
> to figure out how to implement it without causing the output/dynamic-data
> requirements of said sites to be broken - a book that detailed
> extreme/complex
> smarty caching implementation might be just what I need.
>


I guess it depends on what "extreme/complex smarty caching" means. I wrote
the chapter on caching and there is definetely a lot of content on
conditional caching as well as other features, but it still doesn't matter
much if I don't know exactly what you mean.

--Joao
Jochem Maas

2006-05-01, 7:06 pm

Joao Prado Maia wrote:
> Jochem,
>
>
> Thanks! I'm glad that the book is finally published and available to the
> public.
>
>
>
> I guess it depends on what "extreme/complex smarty caching" means. I
> wrote the chapter on caching and there is definetely a lot of content on
> conditional caching as well as other features, but it still doesn't
> matter much if I don't know exactly what you mean.


caching groups. (does that even exist or am I ?)
[complex] conditional caching.
caching pages where parts of the page needs to stay completely
dynamic.

It's difficult to describe what I mean because of the fact that
I don't grok the smarty cache functionality - bit of a chicken 'n' egg
problem - although what you mention sounds like it could do me some good
to read....

thanks for the feedback.

>
> --Joao
>

Jochem Maas

2006-05-02, 7:07 pm

I hit send too soon by mistake!

Monte Ohrt wrote:
> Just a reminder, there is a wonderful book written long ago that covers
> Smarty caching. It's called the manual, and it's full of explanations
> and examples :)
>
> http://smarty.php.net/manual/en/caching.php
>
> Not to mention tons of threads in the forums and wiki pages re-iterating
> this information in detail. I'm sure the new book has useful information
> too, but I'm curious, what is left out that creates this chicken-egg
> delima?


the fact that I don't understand the manuals in so far as the concepts/functionality
of compiling/caching. - or at least I don't see how I can extrapolate the
examples to a level of complexity where I can implement the functionality into
my 'system'.

for instance there are a few lines of code on this page:

http://smarty.php.net/manual/en/cac...iple.caches.php

if(!$smarty->is_cached('index.tpl',$my_cache_id)) {
// No cache available, do variable assignments here.
$contents = get_database_contents();
$smarty->assign($contents);
}

but I have data coming from various sources - injected into the *templates*
(which are often nested) at various places (using various subclasses and
delegate classes for/of the Smarty class) on top of which there are various
a load of plugin functions that retrieve data all on their own (no input
fom the calling scripts) - and pretty much all of this is conditional based on
reuqest and/or session variables. oh and there are quite alot of places where
certain bits of content must be completely dynamic (recalculated on each request
- on a per user basis) even when the gross of the page could actually be cached
because it doesn't change on every request.... lastly I like my caching functionality
to be completely generic so that it's reusable accross all the sites that the
codebase in question is used on (a number of 'big' clients) and the implementing it
on each site doesn't require reams of additional code in my frontend|page scripts.

now just writing that made my head spin ;-)

hopefully you see that it's not your docs at fault so much as I have got a
rather complex codebase and I'm finding it:

a, hard to fully understand the compiling/caching paradigm in smarty per se

and

b, harder still to take the examples in the docs and extrapolate the concepts
into a design for flexible,generic production quality caching mechanism which
i can actually implement (and would work: in terms of the clients' requirements
for dynamic content - i.e. that 'truely' dynamic stuff doesn't get cached, etc).

regards,
Jochem.


>
> Monte
>
> Jochem Maas wrote:
>
>

DC

2006-05-02, 7:07 pm

Here's a few tips from my learning curve with caching:

http://smarty.incutio.com/?page=CacheAndCompile

and a thread from 18 months ago that talks to what messju mentioned
about creating your own caching logic:

--------------------------------------------------
>
center block...[color=darkred]
to a main[color=darkred]
cached along[color=darkred]
include[color=darkred]
while the left[color=darkred]
>


yes, i need caching to help deal with some database speed issues. that is
the primary reason i use smarty. that, and the way it helps me keep HTML out
of my PHP code.

[color=darkred]


so i should use fetch() and pass the returned text to a template variable
placed directly in the index template? if i get you right, fetch() in my PHP
code can take the place of an include tag AND i get cache control over it?
. i'll give it a try.

i assume that in this technique, i can no longer cache the index template's
output, but should feed it out 'raw' each request. am i correct in that
assumption? if i left the index template caching in place smarty would just
use the final rendered output text from the display() call and ignore the
fresh/uncached text fetched into template variables. should i turn off
caching just before calling display() as you do in the code below?

[color=darkred]


Oh this looks super! I like the idea of organizing my blocks into objects!
Thanks for the tip.
-----------------------------------------------------------

I hope that that helps! It took a long time for me to fully understand
the caching system in Smarty - take your time.

Oh yeah, and don't forget $smarty->caching=2; to get non-expiring caches
which is the only way to properly control them. The default is to expire
in 1 hour!

<minorrant>I don't really understand why the default is to expire
caches, but that's the way it is. To me, expiring caches is a
specialized use of caching that should be the result of a request, not
the default. If you turn on caching, it should just turn on and stay on
- not turn off in an hour. But, then again, I'm not the one who built
smarty and it is easy enough to change it. But, it sure stumped me for a
few days until i read the fine print in the manual.</minorrant>

dan

messju mohr had written:[color=darkred]
> On Tue, May 02, 2006 at 05:17:11PM +0200, Jochem Maas wrote:
> [...]
>
>
>
> my experience with smarty's caching is, that it's
>
> a, works best if the whole system is built with caching in mind, and
> built around smarty's caching mechanisms.
>
> and that you can
>
> b, use any caching with smarty that you like: just leave smarty's
> caching off, and fetch the cached contents with your cache logic and
> assign them to template variables which are displayed templates.
>
>
>
>

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com