Return-Path: Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 47518 invoked from network); 25 Jan 2001 16:13:08 -0000 Received: from fw.infoplanning.net (HELO infoplanning.com) (@209.8.58.131) by h31.sny.collab.net with SMTP; 25 Jan 2001 16:13:08 -0000 Received: (qmail 6440 invoked from network); 25 Jan 2001 16:23:18 -0000 Received: from unknown (HELO apache.org) (192.168.0.189) by inet with SMTP; 25 Jan 2001 16:23:18 -0000 Message-ID: <3A704FB2.A1AAA33A@apache.org> Date: Thu, 25 Jan 2001 11:09:22 -0500 From: Berin Loritsch X-Mailer: Mozilla 4.75 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: "cocoon-dev@xml.apache.org" Subject: [C2] Proposal Back-End Caching mechanism Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N I want to propose a caching solution that many CPU manufacturers use in their caching implementations. Basically we have what is known as a "smart" cache. The cache is what the sitemap uses to get the various stages, and is transparent to any component development. Below is an ASCII Sequence Diagram as to how a request is processed using this functionality. Sitemap Cache Generator Transformer Serializer Reader | generate() | | | | | +------------>+-| isValid() | | | | | |<| | | | | | yes | no | | | | |<------------+------------>| | | | | transform() | | | | +------------>+-| isValid() | | | | |<| | | | | yes | no | | | |<------------+------------------------->| | | | serialize() | | | +------------>+-| isValid() | | | |<| | | | yes | no | | |<------------+------------------------------------->| | | read() | | +------------>+-| isValid() | | |<| | | yes | no | |<------------+------------------------------------------------>| | That way, for each stage, the Cache handles the Validation (and Validators). If a resource is stale, it uses the end Component to refresh it. Also, the Cache is set up so that the Validators are assigned not at the pipeline stage, but at the initialization stage: I think this is the most desirable way of doing it.