CacheFu 1.1.1 (Feb 23, 2008)
Mostly a bug fix release but also includes a few feature enhancements including new improved configs for Squid, Varnish, and Apache proxy cache servers. See release notes for more details.
For additional information about this project, please visit the overview page .
Available downloads
Release Notes
| Tested with | Plone 3, Plone 2.5 |
|---|---|
| State | Final release |
| License | GPL |
| Release Manager | Ricardo Newbery |
| Released | 2008/02/03 |
CacheFu is a collection of products which aggregate and simplify various caching settings, speeding up Plone sites using a combination of memory, proxy, and browser caching. CacheFu can be used by itself or with Squid, Varnish, and/or Apache. Configuration files can be generated for Squid, Varnish, Squid-behind-Apache, Varnish-behind-Apache, and Apache cache proxy (if you are using a non-caching Apache by itself or just Zope-only, no extra configuration files are needed).
CacheFu is currently shipped as a separate add-on to Plone as we expect more releases in the near future to add additional features and flexibility. CacheFu 1.1.1 has been tested on Plone 3.0 and Plone 2.5+. For earlier Plone versions, try CacheFu 1.0.3 instead.
New Features in CacheFu 1.1.1
- New improved proxy cache configs for Squid, Varnish, and Apache (yes, Apache can be used as a proxy cache server -- although it doesn't support PURGE requests). Look in the 'cachefu-proxy-configs' folder for more information.
- Added an VirtualHostMonster 'inside-out' example to the custom rewritePurgeUrls script. The rewritePurgeUrls script is found in the 'cache_setup' skins folder.
- Added support for 'stale-while-revalidate' and 'stale-if-error'. See http://www.mnot.net/blog/2007/12/12/stale
- Added kss registry to resource cache rule.
- Added a cache rule for RSS feeds.
- Lots of bug fixes.
New Features in CacheFu 1.1
- An "off" switch. Previously, you had to uninstall in order to turn off caching. Now you can turn it off without losing your configuration.
- Multiple cache policies. A cache policy is a container for cache rules and header-sets so you can now have multiple sets of rules and headers for different occasions or site development purposes.
- Caching of Zope 3 views.
- Customizable purge urls.
- Improved Last-Modified dates.
- Simplified Squid configs.
- Varnish configs.
New CacheFu Manual and Web Caching Reference
A new CacheFu Manual and a Web Caching Reference is nearing completion. Stay tuned for an announcement.
Installing CacheFu
Installing CacheFu for the first time:
- Copy CacheSetup, PageCacheManager, CMFSquidTool, and PolicyHTTPCacheManager into your Products directory.
- Restart Zope.
- Install the CacheFu product via the Plone "Add/Remove Products" page.
- Optional: Configure via the "Cache Configuration Tool" (see Configuring CacheFu in the Manual).
- Optional: Install Squid or Varnish (see Reverse-Proxy Cache Servers in the Manual).
Upgrading from CacheFu, versions 1.0 - 1.1:
- Copy CacheSetup, PageCacheManager, CMFSquidTool, and PolicyHTTPCacheManager into your Products directory.
- Restart Zope.
- Click on the reinstall
link next to the CacheSetup product in the Plone "Add/Remove Products"
page.
- Note: A reinstall keeps your old pre-1.1 configuration in a Cache Policy named "Old Cache Policy". Any other cache policies with ids that conflict with the new ones will be backed up and relabeled appropriately.
- Optional: Configure via the "Cache Configuration Tool" (see Configuring CacheFu in the CacheFu Manual).
- Optional: Install Squid or Varnish (see Reverse-Proxy Cache Servers in the CacheFu Manual).
Upgrading from a pre-1.0 version of Cachefu:
- Uninstall your existing CacheSetup and CMFSquidTool via the Plone "Add/Remove Products" page.
- Continue with the instructions for a "first time" install above.
Extras
Config files for Squid, Varnish, and Apache can be found in the 'cachefu-proxy-configs' directory.
There is also a Varnish buildout recipe under development at: http://pypi.python.org/pypi/plone.recipe.varnish
Feature enhancements in this release
The following features are associated with this release:
- stale-while-revalidate / stale-if-error
- Add stale-while-revalidate and stale-if-error Cache Control options
Change log
CacheFu 1.1.1
- Release manager: Ricardo Newbery, ric@digitalmarbles.com. Compatible with: Plone 3.0 and Plone 2.5+
- Added an VHM 'inside-out' example to the custom rewritePurgeUrls script. [newbery]
- Fixed the migration from pre-1.1 cache policies. [newbery]
- After reinstall we now move the new policies to the top of the list. [newbery]
- For most use cases, Accept-Language in Vary is unnecessarily conservative. Even in many multi-lingual sites, Accept-Language is not common. So it's no longer the default. [newbery]
- Cachefu is now disabled if filesystem version doesn't match installed version. We also update the schemas upon reinstall. The combination of both of these should catch most problems with mutating schemas. [newbery]
- Implemented feature enhancement #9: stale-while-revalidate / stale-if-error [newbery]
- We no longer magically override the headerset settings based on the proxy cache configuration selection. We might have a reverse proxy cache that is not purgeable so now we always respect the policy settings. This is better done explicitly anyway. [newbery]
- The id widget for the cachetool is now always hidden. Changing this id would break things badly. [newbery]
- Fixed several svn external properties broken because of svn reorganization. [erral]
- Reorganized several imports and schema definitions to improve code readablity. [newbery]
- Fixed the reinstall sequence to route around potential cachepolicy id collisions. [newbery]
- Removed two policy sets from the default install. Squid-without-vary because latest squid now properly supports purge with vary. Default-cache-policy-v2 because tests don't show any improvement over the old default policy and because of potential (but unconfirmed) problems with the no-cache rule. [newbery]
- Added kss registry to resource cache rule [newbery]
- Added a cache rule for RSS feeds [newbery]
- Added 'b_start' to etag for templates cache rule. Fixes http://plone.org/products/cachefu/issues/97 [newbery]
- Removed cachetool.unindexObject() from Install.py since we've already disabled the indexing and it was contributing to http://plone.org/products/cachefu/issues/92 [newbery]
- Eliminated a possible source for zodb write conflicts in high write scenarios. Hopefully fixes http://plone.org/products/cachefu/issues/105 [newbery]
- Fixed traceback_supplement for Plone 3.0 [rossp]
- After Plone 3.0.1, something changed in Archetypes trunk that breaks a couple of our templates. Added an explicit definition for the "allow_tabbing" variable in these templates to fix it. [newbery]
- Fixed references to 'CacheFu' in install instructions where it should be 'CacheSetup' [erikrose]
- Products.PageTemplates.TALES is obsolete. We now import zope.tales.tales instead [wichert]
- With plone 3 trunk and zope 2.10.4 the (un)registerUtility keywords are 'component' and 'provided', in IFiveSiteManager (Five 1.5.5) they are the old way (utility, interface) but IFiveSiteManager does not seem to be used here so this is changed [svincic]
- Added keyword arguments when calling (un)registerUtility, because the order of the arguments is the other way round in the IFiveSiteManager interface (at least with Five 1.4.4) [witsch]
- Was previously doing a naive check for Plone 3 style site managers which would fail on Plone 2.5 if the portal had been converted to a local site with Five 1.4. Fixed to test for five.localsitemanager. [rocky]
- Added method getEnabled to cache_tool to partly fix http://plone.org/products/cachefu/issues/96 [maurits]
- Cleaned up the icon. Properly transparent with no white border, slightly bigger, a little color, and a bit of 3D embellishment. [newbery]
- Added a documentFirstHeading class and removed the icon from the main tab to match the other control panels -- don't want to stand out do we? [newbery]
- Added BaseCacheRule to types_not_searched. Fixes http://plone.org/products/cachefu/issues/113 [newbery]
- Some tests were updated; some new tests added; some test refactoring. Added policy http cache manager cache rule implementation tests. Testing schemas is deprecated. Added tests for class and skeleton tests for methods. Removed unused imports. [hvelarde]
- Moved BaseContent class inheritance to BaseCacheRule to simplify code in final classes. BaseCacheRule class is initialized now to avoid potential security issues. Updated test suite to reflect these changes. [hvelarde]
- Added plone_tool marker to cache_tool. [hvelarde]
- Brought back cachingPoliciesDummy.html. This was accidently removed in the last release. It's a cosmetic thing; caching_policy_manager needs this for it's ZMI view. [newbery]
- Proxy config changes:
- Cleaned up and updated the proxy configs. Moved 'config' directory to the more descriptive 'cachefu-proxy-configs'. Cleaned up the readme instructions. Renamed the makeconfig configuration to makeconfig.cfg, to clarify it's purpose. Added new configs for Squid and Varnish proxy cache setups. Added some example configs for an Apache-only proxy cache setup. Eventually, we're probably going to deprecate this and recommend buildouts for the proxy configs. [newbery]
- Bug fixes: Corrected the log file path for squid log files, but kept them commented. Removed references to unexistent scripts in proxy config deploy script. [erral]
- Bug fix: Moved ';' to the tal:define. Was just behind it. [redcor]
- Bug fixes: Fixed print statement in makeconfig. Removed unnecessary squid_direct condition. Removed "direct" directive and adjusted makeconfig to match. [newbery]
- Bug fixes: In apache configs, uncommented the "RewriteEngine On" line. Added an 'all' acl to the Squid configs, since Squid appears to need this in some situations. Fixed the proxy deploy script to not try to chmod files that do not exist. Fixed some bugs in makeconfig. [wichert]
- Bundled the current tagged CMFSquidTool which includes the latest changes:
- Many Squid configurations ignore query strings, but not all. Query strings are not retained in purge urls. [alecm]
- Fixed getUrlsToPurge when the object has no REQUEST. [maurits, reinout]
- Fixed a blocking Queue.put call that never raised Queue.Full and so was never caught. [rossp]
- Squid (at least version 2.6.STABLE14) returns 404's for PURGE requests using HTTP 1.1 when an "Accept-Encoding: identity" header is included in the request. Squid now doesn't generate this header. [dunny]


