forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ferdinand Soethe <>
Subject Re: Reducing Forrest build time
Date Fri, 12 Aug 2005 19:40:18 GMT

Tim and David wrote:

>> > What are the best ways of
>> > approaching it? (avoiding building unchanged document is the obvious first
>> > step I guess)
>> Well yes, but that issue is complex. Evidently
>> Ferdinand talked with Cocoon people at ApacheCon
>> and might now have some answers.

> Ferdinand, I'd also like to know what you discovered with the Cocoon
> folks on this not building unchanged everything.

Well I basically discovered that <checksums-uri> in cli.xconf is
functional and works though I haven't figured out why it didn't work
when I tested earlier this year and I haven't had the time to
thoroughly test its function for all kinds of situation.

However I can already state that this is not going to reduce our build
time because of the way checksums works:

- Create or update a checksum for each document each time it is build
- Next time compare that checksum to the checksum for the newly build
  document before it gets  written and if they are the same, don't
  write it again.

So checksums are great if you want to use simple sync mechanisms to
upload your static site (because unchanged files are not written again
and don't have their date stamp changed) but it is no good as far as
build times are concerned because all the building steps have to
happen time and time again.

So what we are really looking for is a way to make Cocoon save their
caching of each pipeline from (client-)session to session. That way
Cocoon will use all it's fancy mechanisms to determine the exact point
in the pipeline where it needs to start rebuilding so that we don't
have to worry about questions like 'has a menu changed' etc.

>> One thing to bear in mind is that each time we
>> enhance the pelt skin, then *all* pages need to
>> be re-generated even though their content hasn't changed.

True but not true. As far as I understand pipelines Cocoon (in a
dynamic environment) will recognize which inputs have changed and will
only rebuild from there. Which will save a lot of time on larger docs.

>> Also adding a new page means changes to the navigation menu
>> which means regenerating lots of pages that haven't changed.

Ideally only rebuilding the menus and merging them with the unchanged
parts of the page, not?

> For these two, skin changes and navi changes, this may be really dumb
> (haven't fully thought it through) but how bad would it be to have a
> different target for builds intended for a web server so that we could
> utilize server side includes?

I don't understand how serverside include would solve any problem
other than inserting date-stamps?

Ferdinand Soethe

View raw message