Okay, I think I've found the problem with my aggregate caching. I have an xsp, and I use the cocoon:/ protocol to map:aggregate that xsp. Something like the usual:
<map:match pattern="foo"> <map:aggregate element="site"> <map:part src="cocoon:/from-an-xsp.xml"/> </map:aggregate> ... The symptom is that if I ask for http://foo?param=1 and then ask for that same url again, everything appears to be read from the cache. But, if I ask for http://foo?param=2 and then ask for http://foo?param=1 according the logs, Cocoon is re-aggregating the cached content of my xsp, rather than using the cached aggregated value. (This is a problem because I have quite a few transformations that take place after that aggregation, and they all get re-run needlessly). The problem appears to be that the aggregated content has a key which is based upon the src string (cocoon:/from-an-xsp.xml) which, in this case, is identical--it doesn't bother to ask the xsp for its key value. A workaround for this is to make the ContentAggregator key based upon the source's getLastModified() number (which, at least, is based upon hash of xsp's validity object [SitemapSource:refresh()]). In ContentAggregator: public long generateKey() { // ... if (current.getLastModified() == 0) { return 0; } else { // ... key += current.getLastModified(); // <-- ADD THIS LINE } // ... Does the problem & solution make sense? If so, should I submit a patch? Thanks, Steve > -----Original Message----- > From: Stephen Ng > Sent: Monday, October 28, 2002 10:42 AM > To: [EMAIL PROTECTED]; [EMAIL PROTECTED] > Subject: RE: CaheValidity & toString() > > > I am running into this same problem (I think) but I'm > confused as to what to do about it. > > I have xsp's with generateKey() and > generateValidity()methods, and when I put the xsp in an > aggregate, cocoon re-aggregates every time, instead of used > the cached aggregated value. The symptom is that it says > that the TimeStamp Validity is not the same for my aggregated > component. > > I'm using my own CacheValidity, which does have a toString() method. > > I've tried replacing my xsp with the cacheable.xsp from the > cocoon sample application, and I get the same problem--the > aggregate isn't cached. > > Is there some other method I need to implement somewhere? > > Thanks, > > Steve > > > -----Original Message----- > > From: David LAGARDERE [mailto:dlagardere@;yahoo.fr] > > Sent: Friday, September 13, 2002 3:54 PM > > To: [EMAIL PROTECTED] > > Subject: CaheValidity & toString() > > > > > > Hello. > > > > Sorry if the following was documented. However, after > > many hours I spent on it, I found interesting to > > describe what I've found about Caching. > > > > I would like to have your opinion on a solution I've > > found to my troubles with Cacheability of aggregated > > content (see the previous mails I've sent). > > > > The problem I had was the fact that Cocoon didn't > > cache a StreamPipeline containing an aggregator > > composed of my own Cacheable Generator : the log > > told me the TimeStamp Validity of the Pipeline changed > > everytime I requested the page whereas my generator was > always valid ! > > > > As each part of an aggregator is a SitemapSource > > instance, the key and the validity of the pipeline are > > built upon the SitemapSource last modification date. > > This date is the concatenation of the Pipeline Cached > > Key string value and the Pipeline Validity string > > value. > > The Pipeline Validity is a Map which associate a > > Component Cached Key with its validty. Its string > > representation is the string representation of each pair > > {key, value}, that is , a call to the toString() method on > > both Component cached key and Component validity objects. > > As a consequence, every validity may overload the > > toString() method returning a relevant value otherwise > > the returned value will be the memory address of the > > object, which of course, can't be taken as a relevant > > value. > > > > Please tell me if I'm wrong, but this is the only way > > I've found to have my CachingStreamPipeline cached ! > > > > > > David Lagardere > > > > > > ___________________________________________________________ > > Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en > > français ! Yahoo! Mail : http://fr.mail.yahoo.com > > > > > --------------------------------------------------------------------- > > Please check that your question has not already been > answered in the > > FAQ before posting. > <http://xml.apache.org/cocoon/faq/index.html> > > > > To > unsubscribe, e-mail: <[EMAIL PROTECTED]> > > For additional commands, e-mail: > <[EMAIL PROTECTED]> > > > > > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]