Folks,
I am trying to speed-up my app (a search engine) by using caching. The idea
is to to run a query once, and allow quick browsing through multiple
pages of
results without redoing the query - which is an expensive processing
step. It
does not seem to work as expected, in a way I do not understand! :-(
My custom Cocoon components all use the query as their key, and return a
NOPValidity object: no constraints, use the cache unless the query changes.
I have isolated the query processing in a separate pipeline definition,
starting
with my custom generator. If I call on this pipeline, caching seems to
work as
expected. However, my query results are part of an aggregated page built-up
in a top-down fashion:
<map:pipeline>
<map:match pattern="index">
<map:aggregate element="html">
<map:part src="cocoon:/index-header"/>
<map:part src="cocoon:/index-body"/>
</map:aggregate>
</map:match>
<map:match pattern="index-header">
<map:generate type="jx" src="index-header.jx"/>
<map:serialize/>
</map:match>
<map:match pattern="index-body">
<map:aggregate element="body">
<map:part src="cocoon:/index-form"/>
<map:part src="cocoon:/index-process-query"/>
</map:aggregate>
</map:match>
<map:match pattern="index-form">
<map:generate type="jx" src="index-form.jx"/>
<map:serialize/>
</map:match>
</map:pipeline>
<map:pipeline>
<map:match pattern="index-process-query">
....
Somehow, the "results" pipeline regularly runs again from the start,
even when my query hasn't changed a bit! Why?! When browsing
through search results, a new request gets done (flowscript loop),
with only a "page" request attribute changing. This attribute is used
at the end of the index-process-query pipeline (paginator). Could
anybody suggest what I'm overlooking here?
hints much appreciated,
Sandor
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]