CacheFu History
===============

This file contains change information for previous versions of
CacheFu. Change information for the current release can be found
in the file CHANGES.txt.


1.2 - released 2008-05-02
-------------------------

Release manager:
  Ricardo Newbery, ric@digitalmarbles.com
Compatible with:
  Plone 3.0 and Plone 2.5.x

- Refactor the GS export/import code.
  Add support for multiple caching policies.
  The format of the XML file is now consistent with standard property
  and object manager formats.
  [wichert]

- Allow installation via a GenericSetup profile. Keep using the old style
  external method as default installation option. This means you can now
  install CacheSetup completely through a GenericSetup profile dependency.
  [wichert]

- Repackaged as an egg.
  [wichert]


1.1.2 - released 2008-04-23
---------------------------

Release manager:
  Ricardo Newbery, ric@digitalmarbles.com
Compatible with:
  Plone 3.0 and Plone 2.5.x

- Removed some deprecated tests.  [newbery]

- Synced up the squid and varnish configs with the changes in
  plone.recipe.squid and plone.recipe.varnish.  Mostly removed
  the special handling of cookie-authenticated requests and in
  the varnish case, added some handling of cache-control tokens.
  [newbery]

- Added a default_ttl of zero seconds to the varnish runner.
  [newbery]

- Unauthorized requests now do not trigger a full CacheFu disable.
  CacheFu is still disabled but no objects are actually removed.
  A temporary fix for http://plone.org/products/cachefu/issues/134
  [newbery]

- Removed no-cache from the default cache policies and added a warning
  to the noCache and noStore fields about the IE/SSL bug.
  Fixes http://plone.org/products/cachefu/issues/117
  [newbery]

- Fixed reordering UI.  http://plone.org/products/cachefu/issues/131
  [newbery]

- Removed lazy expression cleanup routine since we don't do macro
  caching anymore.  [newbery]

- Fixed UnicodeDecodeError in PT_pt_render()
  http://plone.org/products/cachefu/issues/126
  [newbery]

- Fixed rewritePurgeUrls.py.  Was referencing the method before
  its definition.  [newbery]

- Cleaned up the descriptions of some cache rules.  [newbery]

- Removed RSS from the container rule since we do this in a
  separate rule now.  [newbery]

- Fixed typo in getHeaderSetIdForCSSAndJs.py which would throw
  an error if still using the old cache policy (pre-1.1.1).
  [newbery]


1.1.1 - released 2008-02-03
---------------------------

Release manager:
  Ricardo Newbery, ric@digitalmarbles.com
Compatible with:
  Plone 3.0 and Plone 2.5.3

- 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:

  1) 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]

  2) 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]

  3) Bug fix:  Moved ';' to the tal:define in xxxxxxx.  Was just behind it [redcor]

  4) Bug fixes:  Fixed print statement in makeconfig. Removed unnecessary
     squid_direct condition. Removed "direct" directive and adjusted 
     makeconfig to match. [newbery]

  5) 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:

  1) Many Squid configurations ignore query strings, but not all.
     Query strings are not retained in purge urls. [alecm]

  2) Fixed getUrlsToPurge when the object has no REQUEST. [maurits, reinout]

  3) Fixed a blocking Queue.put call that never raised Queue.Full
     and so was never caught [rossp]

  4) 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]


1.1 - released 2007-08-17
-------------------------

Release manager:
  Ricardo Newbery, ric@digitalmarbles.com
Compatible with:
  Plone 3.0 and Plone 2.5.3

- Added an INSTALL.txt  [newbery]

- Fixed http://plone.org/products/cachefu/issues/69  [newbery]

- Applied patch from http://plone.org/products/cachefu/issues/57
  [newbery]

- Removed CacheSetup content items from catalog  [newbery]

- Unadvertised the GenericSetup profile since it's currently 
  broken  [newbery]

- Archived some old docs and updated a couple  [newbery]

- Added cache policies framework (and some alternative policies)
  [newbery]

- Added subscription adapters: getRelativeUrls, getAbsoluteUrls
  [wichert]

- Overhauled and simplified Squid configs  [newbery]

- Added Varnish configs  [newbery]

- Added a bunch of tests  [hvelarde]

- Refactored Install.py  [hvelarde]

- Removed CookierCrumbler setup since it's deprecated in Plone 2.5
  [hvelarde]

- Consolidated interfaces.  Both old style and new.  Will convert
  all to new style in next release.  [newbery]

- Made 'ids' visible in the UI to ease diagnostics of response 
  headers  [newbery]

- Fixed potential cross-site vulnerabilty, 
  http://plone.org/products/cachefu/issues/88  [newbery]

- Added a customizable rewritePurgeUrls.py  [newbery]

- Added 'enabler.py' module.  An "off" switch.  [newbery]

- Fixed caching of Zope 3 views for Plone 2.5  [rafrombrc]

- Added caching of Zope 3 views for Plone 3.0  [optilude]

- Fixed template when in Plone 3 to use deprecated 
  old_folder_contents  [optilude]

- Added getFolderButtons.py since folder_button actions are not
  available as global actions in Plone 3  [newbery]

- Install.py now removes the old unused 'cached_macros' folder
  during upgrade  [newbery]

- Added lastDate() and getLastTransactionDate() functions for 
  better Last-Modified dates  [newbery]

- Added an aliases lookup, to find the default view for objects.
  Fixes caching for PloneHelpCenter types  [wichert]

- Added invalidation of file and image fields in content objects
  [wichert]

- Added some acquisition safety to getRelativeUrlsToPurge in 
  content_cache_rule.py  [wichert]

- Added invalidation of content item instead of discussion item
  [wichert]

- Added 'statusmessages' to 'cachestop' items  [reinout]

- Added a check for installed types in installation test in
  preparation for migration to GS  [tomster]

- Removed macro caching code (which doesn't work in v2.5-v3.0)
  [tomster]

- Fixed bailout when encountering "views"  [fschulze]

- Added more stuff to GS profiles  [fschulze]

- Merged misc. fixes from sorrento branch  
  [fschulze, reinout, mdziergwa]

- Fixed some bugs in old-style squid configs  [justizin]

- Fixed potential AttributeError with getObjectDefaultView in
  base_cache_rule.py  [alecm]

- Updated imports for new Zope  [tesdal]

- Fixed fields using StringField when they should be using
  TextField  [witsch]

- Fixed some functional tests in "/tests/cache_manager.txt" and
  "/tests/test_doctests.py"  [witsch]

- Fixed login_form name in /tests/test_functional.py   [tesdal]

- Fixed patch_cmf.py so tests work in Plone 3  [tesdal]

- Fixed traceback in patch_cmf.py  [tesdal]


1.0.3 - released 2007-08-16
---------------------------

Release manager:
  Ricardo Newbery, ric@digitalmarbles.com
Compatible with:
  Plone 2.1 and Plone 2.5

- Fixed potential cross-site vulnerabilty, 
  http://plone.org/products/cachefu/issues/88  [newbery]

- Applied patch from http://plone.org/products/cachefu/issues/57
  [newbery]

- Added an aliases lookup, to find the default view for objects.
  Fixes caching for PloneHelpCenter types  [wichert]

- Added logic to invalidate file and image fields in content objects
  [wichert]

- Added some acquisition safety to getRelativeUrlsToPurge in
  content_cache_rule.py  [wichert]

- Added invalidation of content item instead of discussion item
  [wichert]

- Fixed potential AttributeError with getObjectDefaultView in
  base_cache_rule.py  [alecm]


1.0.2 - released 2006-12-19
---------------------------

Release manager:
  Alec Mitchell, apm13@columbia.edu
Compatible with:
  Plone 2.1 and Plone 2.5

- Addresses some minor issues with generated configuration, 
  documentation, and version compatibility with Plone and Squid.


1.0.1 - released 2006-06-29
---------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.5

- Bug fix release.

- Fixes some thread safety issues.

- Fixes several potential race conditions that can cause your
  site to deadlock or consume 100% CPU.  It is strongly recommended
  that you upgrade to 1.0.1.


1.0 - released 2006-06-16
-------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.5

- Now ready for production!


1.0-rc-3 - released 2006-06-13
------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.5

- Fixed a macro cache bug that caused conflict errors when
  recataloging a site in heavy traffic. 

- Minor bug fix: The macro cache was persisting some variables
  that should have been volatile.  The variables have been made volatile.


1.0-rc-2 - released 2006-06-09
------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.5

- Fixes some threading problems in the macro cache and some 
  problems with asynchronous purging of squid.

- The macro cache is now threadsafe.  RC1 and beta 2 had some 
  non-threadsafe code that could lead to deadlocks.

- The squid purge queue has been fixed (thanks, Sidnei!)

- Squid purging is done with HTTP 1.0 and the correct URL 
  is used (thanks, Alec!)

- Added a rule for CSS files generated by DTML (e.g. IEFixes.css)

- Added the host to the cache key for cached macros so that
  absolute_url works consistently in cached content.


1.0-rc-1 - released 2006-06-02
------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.5

- Memory related fixes.  The various memory caches are now much
  more space-efficient, and a major memory leak has been fixed.

- A number of smaller UI fixes are included as well.


1.0-beta-2 - released 2006-05-12
--------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.1 and Plone 2.5

- Workarounds for IE bugs

- Script to auto-generate and deploy squid config files for
  squid standalone and for squid behind apache

- Macro caching. Speeds up all pages using main_template (Plone 2.0
  and 2.1 only; experimental, off by default).


1.0-beta-1 (codename: spoon) - released 2006-03-29
--------------------------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.1 and Plone 2.5

- The first official CacheFu release.

- Major refactoring.

- Added lots of unit tests and functional tests.


0.1 (codename: danielsan) - released ?
--------------------------------------

Release manager:
  Geoff Davis, geoffd@phds.org
Compatible with:
  Plone 2.1

- The original release of CacheFu, very guerilla, but still very good,
  with no configlet.  Don't use it unless you're crazy.


