cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: JXTG and caching
Date Tue, 01 Jun 2004 08:09:46 GMT
Leszek Gawron wrote:

> While almost everybody buried XSP it has got one great feature that 
> JXTG  lacks: it's cacheable. I know that there is no way to implement 
> automatic JXTG caching but what if I know on what env does jx template 
> operate. If I know that it is for example only request param "abc" and 
> "bcd" and session attribute "xxx" then I know when I can use cached 
> entry. The question is: how?
>
> Should I extend JXTemplateGenerator so it is a cached component? I 
> understand it gets the validity methods to implement then. So every 
> time I call my extended component from flow I pass also the validity 
> calculated in flow. Something like this:
>
> function niceCachedResponse() {
>   var cacheKey = cocoon.request.get( "abc" ) + "!!spacer!!"
>                     + cocoon.request.get( "bcd" ) + "!!spacer!!"
>                     + cocoon.session.getAttribute( "xxx" );
>   var pageValidity = new DeltaTimeCacheValidity( 60 * 60 * 24 );
>                                                 // one day
>   cocoon.sendPage( "view/cached.jx", {
>                                      JXTGExtCacheKey: cacheKey,
>                                      JXTGExtpageValidity: pageValidity
>                                      someOtherBizData: data } );
> }
>
> Does it have a chance to work ?


Well, it _could_ have a chance to work, but flowscript is definitely not 
the appropriate location to compute cache information for an element of 
the view pipeline.

The problem with JXG is that the template is the generate() method 
_only_ whereas an XSP is the full class, allowing to define getKey() and 
getValidity().

So what about adding two optional attributes on the template's root 
element, defining the cache information?

<page
    xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
    jx:cache-key='${cocoon.request.get("abc") + "!!spacer!!" + 
cocoon.request.get("bcd")....'
    jx:cache-validity='${new DeltaTimeCacheValidity(60 * 60 * 24)}'>
    ... template ....
</page>

WDYT?

Sylvain

-- 
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }


Mime
View raw message