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>
|