Hi,
 
I am a member of the development team that posted earlier with subject 'Scalability disappointment'. First of all: we did it wrong, and we solved most of the problems. We have acceptable performance now, but it can be better:
 
Background info
============
Big portions of the site could be cached using URL-string together with some session-info as a caching-key. We did that in cocoon1 and that was very fast. However, pages that cannot be cached that way in cocoon1 are very slow (tens of seconds during havy load). Cocoon2 does a better job in most parts, except for the above situation. I searched in the mailing-list but found that I should use a proxy, but I need to gather some site statistics, that must be inserted in our database. We now use a logic-sheet, but in cocoon2 it can (should?) be done in an Action.
 
Timinginfo: with no heavy load (only me clicking) the minimum load time of a page is 2 seconds. All cached parts are valid. Most of the time is consumed by executing all the generateKey / -Validity methods.
 
Sitemap
============
its 70 lines, so I placed it at the bottom of this message...
some parts are URL-dependent, some language-dependent, some country-dependent, some user-dependent....
this seems to be the best structure.
 
Question 1
===========
Am I correct that there is no CocoonCache like in cocoon1? I think I'm correct, so:
 
Question 2
===========
Will there be such a CocoonCache again, or what is the best place to program it myself in cocoon2? I think I would like to change the generateValidity() of class ContentAggregator. I actually want to make a subclass of this and set it up in some external config file, but I cannot find a way.
 
 
I hope someone can help us.
 
Rene Bouw
 
 
again, the Sitemap
=================
<map:pipelines>
 
  <map:pipeline>
   <map:match pattern="*.xml">
     <map:aggregate element="page">
       <map:part src="cocoon:/xhtml/toprow"      element="toprow"     />
       <map:part src="cocoon:/xhtml/navigation"  element="navigation" />
       <map:part src="cocoon:/xhtml/navbanners"  element="navbanners" />
       <map:part src="cocoon:/xhtml/copyright"   element="copyright" />
       <map:part src="cocoon:/xhtml/subfooter"   element="subfooter" />
       <map:part src="cocoon:/xml/session"       element="xml-session" />
       <map:part src="cocoon:/xml/request"       element="xml-request" />
       <map:part src="cocoon:/xml/custominfo"    element="xml-custominfo" />
       <map:part src="cocoon:/xml/permissions"   element="xml-permissions" />
       <map:part src="cocoon:/xml/navigation"    element="xml-navigation" />
       <map:part src="cocoon:/xml/productgroups" element="xml-productgroups" />
       <map:part src="cocoon:/content/{1}" element="xml-content" />
     </map:aggregate>
     <map:transform src="htdocs/{1}.xsl"/>
     <map:serialize/>
   </map:match>
  
   <!-- XML building blocks -->
   <map:match pattern="xml/navigation">
    <map:generate type="serverpages" src="xml-src/navigation.xml" />
    <map:transform src="xml-src/navigation.xsl"/>
    <map:serialize type="xml"/>
   </map:match>
 
   <map:match pattern="xml/productgroups">
    <map:generate type="serverpages" src="xml-src/productgroups.xml" />
    <map:transform src="xml-src/productgroups.xsl"/>
    <map:serialize type="xml"/>
   </map:match>
 
   <map:match pattern="xml/*">
    <map:generate type="serverpages" src="xml-src/{1}.xml" />
    <map:serialize type="xml"/>
   </map:match>
 
   <map:match pattern="content/*">
    <map:generate type="serverpages" src="htdocs/{1}.xml" />
    <map:serialize/>
   </map:match>
 
   <!-- XHTML Screen components -->
  
   <map:match pattern="xhtml/navbanners">
     <map:aggregate element="page">
       <map:part src="cocoon:/xml/session"       element="xml-session" />
       <map:part src="cocoon:/xml/cntbanners"    element="xml-cntbanners" />
     </map:aggregate>
     <map:transform src="xhtml-src/navbanners.xsl"/>
     <map:serialize type="xml"/>
   </map:match>
 
   <map:match pattern="xhtml/*">
     <map:aggregate element="page">
       <map:part src="cocoon:/xml/session"       element="xml-session" />
       <map:part src="cocoon:/xml/request"       element="xml-request" />
       <map:part src="cocoon:/xml/custominfo"    element="xml-custominfo" />
       <map:part src="cocoon:/xml/permissions"   element="xml-permissions" />
       <map:part src="cocoon:/xml/navigation"    element="xml-navigation" />
       <map:part src="cocoon:/xml/productgroups" element="xml-productgroups" />
     </map:aggregate>
     <map:transform src="xhtml-src/{1}.xsl"/>
     <map:serialize type="xml"/>
   </map:match>
 
  </map:pipeline>
 
 </map:pipelines>