Skip to main content

Control caching of Plone sites

Project description


CacheFu speeds up Plone sites transparently using a combination of memory, proxy, and browser caching. Can be used by itself or with Squid, Varnish, and/or Apache. Once installed, your site should run much faster (about 10x faster by itself or about 50x faster with Squid).

CacheFu is a collection of products and recipes. The central product is Products.CacheSetup which when installed via easy_install or buildout takes care of pulling in the rest of the products from the bundle.

The full bundle includes:

Additional optional components include some Squid, Varnish, and Apache configuration helpers. See the installation instructions for more info about these.

The latest information about releases can be found at

CacheFu has been tested with Plone 2.5+ and Plone 3.0. For earlier Plone versions, try the CacheFu 1.0.3 bundle instead.

Products.CacheSetup Installation

Products.CacheSetup is the python egg version of the old CacheSetup product. The egg version automatically takes care of installing all the dependancies that make up the CacheFu bundle. However, the proxy cache configs must still be downloaded and configured separately.

References to the “Manual” below refer to the new CacheFu manual nearing completion as of this release. Visit the official CacheFu site,, for the latest instructions.

There are three options for installation, and then some post-installation steps:

(1) Global Install

To install Products.CacheSetup into the global Python environment (or a workingenv) using a traditional Zope 2 instance:

(2) Local Install (standard buildout install)

To install Products.CacheSetup into the local zope instance if you are using zc.buildout and the plone.recipe.zope2instance recipe to manage your project:

  • Add Products.CacheSetup to the list of eggs to install:

    eggs =
  • Re-run buildout:

    $ ./bin/buildout

(3) Local Install (old style Product install)

Because its top level python namespace package is called Products, this package can also be installed in Zope 2 as an old style Zope 2 Product.

For an old style Product install, move (or symlink) the CacheSetup folder of this project (Products.CacheSetup/Products/CacheSetup) into the Products directory of the Zope instance, and restart the server.

Note that in this case, dependancies are not automatically installed so you will have to repeat this process for the rest of the CacheFu bundle: Products.CMFSquidTool, Products.PageCacheManager, and Products.PolicyHTTPCacheManager.

Post-Installation Steps

If installing for the first time:

  • After starting up Zope, install the CacheSetup product via the Plone “Add/Remove Products” page

  • Optional: Configure via the “Cache Configuration Tool” (see “Configuring CacheFu” in the Manual)

  • Optional: Install and configure Squid or Varnish (see below)

If upgrading from a pre-1.2 version:

  • Remove the previous version from the Products directory of the instance. CacheSetup, CMFSquidTool, PageCacheManager, and PolicyHTTPCacheManager have all been replaced by Products.CacheSetup, Products.CMFSquidTool, etc. If CacheFu was previously installed in a buildout via plone.recipe.distros, then remove the old CacheFu settings from this section and re-run buildout.

  • 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 Manual)

  • Optional: Install and configure Squid or Varnish (see below)

  • IMPORTANT: There is no upgrade path from the pre-1.0 versions of CacheFu. In this case, the old CacheFu products should be completely uninstalled via the Plone “Add/Remove Products” page and then deleted from the Products directory of the instance BEFORE installing the new version.

Proxy Cache Installation and Configuration

Buildout recipes for building and configuring Squid, Varnish, and Apache are available:

Previously, the CacheFu bundle also included a collection of auto-generated proxy configs for Squid, Varnish, and Apache. Starting with version 1.2, this collection is now maintained as a separate download found at


Changelog for the current CacheFu release. For a history of changes prior to this release, see docs/HISTORY.txt

1.2.1 - released 2009-05-17

Release manager:

Ricardo Newbery,

Compatible with:

Plone 3.2, 3.1, 3.0, and 2.5

  • Convert view name to string type before looking up matching cache rules. Also fix up base_cache_rule._associateTemplate to ignore NotFound errors. Thanks to Silvio Tomatis for the report. [newbery]

  • Fixed a Plone 2.5 incompatibility in exportimport/ Thanks to Kai Lautaportti for the patch. [newbery]

  • Added a workaround to fix creating GenericSetup snapshots. [rossp]

  • Added at_download purge URLs for files and images. Fixes a problem with stale file downloads. [rossp]

  • Changed over to a “version-less” naming of policies to make GenericSetup updates more sane. [newbery]

  • Don’t throw an error in Plone 2.5 if all the ‘folder_buttons’ actions have been deleted/hidden. That’s an odd configuration since it makes folder_contents views useless but we should still not throw an error. Fixes [newbery]

  • Fixed a bug where Accept-Encoding was showing up twice in the Vary header. Also made setVaryHeader a bit smarter about what values are required so instead of throwing a validation error we now just quietly fix the obvious omissions. [newbery]

  • Added a free-form, syntax-checked field to the list of headers that a headerset can apply. We now support surrogate cache control. [newbery]

  • A CMFQuickInstaller uninstall/install after a GenericSetup install appears broken somehow. It’s as if GS-installed tools do not get properly unregistered by QI (this is unconfirmed), but oddly a zope restart after a QI uninstall fixes this. But if a restart is not done, one consequence is that setTitle never gets called because getToolByName says the cachetool exists already. Since title is a required field but hidden in the edit form, this makes it impossible to enable CacheFu. QI is going away soon anyway so we punt on this bug and just call setTitle unconditionally. [newbery]

  • Added missing workflow binding for CachePolicy entry in the GenericSetup workflow.xml settings. [newbery]

  • Added missing title for RuleFolder/HeaderSetFolder entries in the GenericSetup cache settings. [newbery]

  • Fixed a GS setuphandlers issue where importing ObjectInitializedEvent breaks in Plone 2.5. Thanks to Kai Lautaportti for the report. [newbery]

  • Fixed a boolean issue seen in Plone 2.5 where setEnabled() fails due to an inappropriate type comparison. Thanks to Kai Lautaportti for the report. Fixes [newbery]

  • Fixed up the version checking. We now no longer rely on quickinstaller to keep track of the installed version since qi is unreliable on product path changes and during some GS installs. We also now no longer do a “full” disable during version mismatches – we don’t need need to anymore since everything now respects the ‘enabled’ flag. [newbery]

  • Fixed up the CacheFu Caching Policy Manager so that it respects the CacheSetup ‘enabled’ field. We don’t have to delete this tool now in order to turn off caching behavior. [newbery]

  • Use the FasterStringIO from CMFPlone/patches/unicodehacks instead of the standard StringIO to avoid issues due to a mix of strings and unicode. [fschulze]

  • Improve the GenericSetup export code:

    • Also export the title field for header and rule sets.

    • PolicyHTTPCacheManagerCacheRule also needs the basic header set fields.

    • Import sub-items before importing the object itself so references work correctly.


  • Add missing title for entries in the GenericSetup cache settings. [wichert]

  • If we silently ignore the ‘enable CacheFu’ option when the user is changing the cache tool settings show a very clear warning. [wichert]

  • Fixed two return values in In Plone 3 you need to return Unicode all the time. Otherwise PageTemplate files in the ZODB would generate an assertion error in pt_render, complaining about the empty string not being Unicode. [hannosch]

  • Add a vocabulary which lists all header sets. [wichert]

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Products.CacheSetup-1.2.1.tar.gz (199.3 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page