Klaus Bertram wrote:

Vadim Gritsenko wrote:

Klaus Bertram wrote:

Hi all,

it seems that there is a caching problem after the map:aggregate module
in the followed transformer
at version 2.0.4 and 2.0.5 it works well but not in 2.1 dev

here a sample:
<map:match pattern="*.html">
  <map:aggregate element="site">
    <map:part src="cocoon:/book-{1}.xml"/>
    <map:part src="cocoon:/body-{1}.xml" label="content"/>
  </map:aggregate>
  <map:transform src="stylesheets/site2xhtml.xsl"/>
  <map:serialize/>
</map:match>

<map:match pattern="body-*.xml">
  <map:generate src="spezification/docs/test.xml"/>
  <map:transform src="stylesheets/site2xhtml.xsl">
    <map:parameter name="use-request-parameters" value="true"/>
   </map:transform>
  <map:serialize type="xml"/>
</map:match>

If index.html is called at the first time it works ok.
If it call's the next times with index.html?id=22 or index.html?id=aass
the first cached side after the aggregation are responded.


From what I see, if you remove use-request-parameters parameter, all requests to the index.html must always return cached result, and request parameters should not affect this behavior. This means, for any request like "index.html", "index.html?id=111", "index.html?whatever=something", response always should be the same and from the cache.

If Cocoon 2.0.4 does not return result from the cache, then it's a bug.
I don't if this is a bug
Is the content aggregation not a special part for caching?

No, it is not. Pipeline with aggregation is cached as a whole. Parts referenced by "cocoon" protocol could be cached separately, because they are separate pipelines.


This means when a aggreagation is processed the caching module should
look at the part caching key if it changed and generate a new cached result?

If pipeline validity for given pipeline key has been changed, then whole result will be recreated.


This can solved the problem ;)

I don't see a problem, because (when you remove use-request-parameters parameter) your sitemap is static thus one and only one cached result should be created for index.html and served regardless of request parameters.

If you want to vary response based on some request parameter, you need to include this request parameter into pipeline key and then results for every variation of input parameter will be cached independently. If you are using XSP, see cacheable.xsp to get an idea.

Vadim


Reply via email to