New Bedework Webcache Available

May 23, 2013

Bedework 3.6, released in February 2010, introduced the "Feed & Widget Builder and web cache applications", based on work originally done at Duke University. These applications have been great enhancements to Bedework.

Microsoft Windows has been an increasingly popular platform for Bedework deployment, and consequently, what was previously something of a minor problem has become a more significant problem. Specifically, when running Bedework under Windows, filtering on more than a small number of feed builder categories could result in path lengths which exceeded the maximum allowed by Windows. This problem could also surface under Linux, but it occurs much less frequently than under Windows.

This problem was brought to the Bedework Steering Committee, and after some initial brainstorming, we consulted with Bedework developers at Duke. Based on that conversation, we decided to replace the built-in Ruby page caching with an ehcache (http://ehcache.org/) implementation.  In more technical detail:

By default, the new caching layer uses a combination of in-memory and on-disk caching.
Any cached pages written to disk reside in a single file that is deleted each time Bedework restarts, eliminating the risk of file path lengths getting too long.
Cache flushing had been an operational issue, requiring deployers to write scripts to clear the cache using using cron(Linux) or task scheduler (Windows) jobs.  The new caching implementation automatically deletes cache entries that are more than an hour old, eliminating the need for these external scripts.
Ehcache can be configured to provide scalability for any likely calendar deployment (http://ehcache.org/about/features)

Thanks to Bedework Steering Committee member Eric Wittmann (formerly of Yale), who volunteered to do the coding, and to our Bedework colleagues at Duke for their insight and guidance.

You can download the updated Bedework cache from :
http://dev.bedework.org/downloads/bw-webcache/

The new urlbuilder/webcache has been back-ported to to Bedework 3.7, 3.8, and the latest release, Bedework 3.9. It is backwards compatible with the current Ruby-based urlbuilder/webcache.

On behalf of the Bedework Steering Committee,
Gary Schwartz