Rune Sandnes wrote: >I'm a bit nervous for our rollout of a site with anticipated high volume >using C2. >I'm not sure the caching system will help us, at least not what I have >looked at so far. > >Our pipeline is like this: > > <map:match pattern="*/*/"> > <map:generate type="serverpages" src="contentgen.xsp"> > <map:parameter name="loc" value="{1}"/> > <map:parameter name="id" value="{2}"/> > </map:generate> > <map:act type="ex-get-stylesheet"> > <map:parameter name="id" value="{2}"/> > <map:parameter name="location" value="{1}"/> > <map:transform src="stylesheets/{stylesheet}"/> > </map:act> > <map:serialize type="html"/> > </map:match> > >The xsp does ESQL-calls and gets the XML content from the database. >The "ex-get-stylesheet" action gets the corrects stylesheet for the >document, based on location or per-document settings (All this is >configurable from the CMS interface) > >Is there any way we can cache this pipeline? I can think of three >options: > >1. Do a test in the xsp to check if the database has been changed, and >then >somehow signal that to the caching system. >2. Check the return from the xsp to see if transformation is needed. >3. Use squid or similar. (But I would try to keep this within Cocoon if >possible) > > You could use DBPrism External Cache Invalidator Server. This server use ESI (http://www.w3.org/TR/esi-invp) invalidation protocol for caching coherence betwen the database server and cocoon. In that case you could synchronize the XSP with a simple stored procedure or other process which sent and HTTP message to Cocoon's invalidator server. This componenent is part of DBPrism, but I'll donate through bugzilla asap. You could find more information about the flowmap of this process at: http://www.dbprism.com.ar/dbprism/doc/cms/CMS-WebCache.html also internal information about the External Cache Invalidator Server interface for Cocoon 2: http://www.dbprism.com.ar/dbprism/doc/xdocs/Server.html In your XSP pages you has to override these methods:
/** * Generate the unique key. * This key must be unique inside the space of this component. * * @return The generated key hashes the src */ public long generateKey() { this.encodedURL = cacheServer.encodeURL( this.source,this.parameters,null); return cacheServer.generateKey(this.encodedURL); } /** * Generate the validity object. * * @return The generated validity object or <code>null</code> if the * component is currently not cacheable. */ public CacheValidity generateValidity() { return new ExternalCacheValidity(this.generateKey(), this.encodedURL); } If you have any question about this component sent me an email. Best regards, Marcelo. -- Marcelo F. Ochoa - [EMAIL PROTECTED] Do you Know DB Prism? Look @ http://www.plenix.com/dbprism/ More info? Chapter 21 of the book "Professional XML Databases" (Wrox Press http://www.wrox.com/) Chapter 8 of the book "Oracle & Open Source" (O'Reilly http://www.oreilly.com/catalog/oracleopen/) ----------------------------------------------- Lab. de Sistemas - Fac. de Cs. Exactas - UNICEN Paraje Arroyo Seco - Campus Universitario (7000) Tandil - Bs. AS. - Argentina Te: +54-2293-444430 Fax: +54-2293-444431 --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>