Navigation

Johnny Cache is a caching framework for django applications. It works with
the django caching abstraction, but was developed specifically with the use of
memcached in mind. Its main feature is a patch on Django’s ORM that
automatically caches all reads in a consistent manner. It works with Django
1.1 thru 1.4 and python 2.4 thru 2.7.

For a full inspection of options for earlier versions of Django please see
the queryset cache docs.

The MIDDLEWARE_CLASSES setting enables two middlewares: the outer one
clears a thread-local dict-like cache located at johnny.cache.local at
the end of every request, and should really be the outer most middleware in
your stack. The second one enables the main feature of Johnny: the
queryset cache.

The CACHES configuration includes a custom backend,
which allows cache times of “0” to be interpreted as “forever”, and marks
the default cache backend as the one Johnny will use.

Finally, the project’s name is worked into the Johnny key prefix so that if
other projects are run using the same cache pool, Johnny won’t confuse the
cache for one project with the cache for another.

With these settings, all of your ORM queries are now cached. You should
read the queryset cache documentation closely to
see if you are doing anything that might require manual invalidation.

Johnny does not define any views, urls, or models, so we can skip adding it
to INSTALLED_APPS.

Note: Since Johnny is enabled by the inclusion of middleware, it will not
be enabled by default in scripts, management commands, asynchronous workers,
or the django shell. See the queryset cache documentation
for instructions on how to enable it in these cases.

Because Johnny tracks Django’s release schedule with its own releases, and is
itself a mature project, the version number has been bumped from 0.3 to 1.4 to
coincide with the highest version of Django with support. In the future,
Johnny’s version will track the major and minor version numbers of Django, but
will have independent dot releases for bugfixes, maintenance, and backwards
compatible feature enhancements.

As of the release of Django 1.4, Django 1.1 and 1.2 are now officially
unsupported projects. In addition, in an effort to clean up code in preparation
for eventual Python 3.3 support, Django 1.4 drops support for Python 2.4 and
Django 1.5 will drop support for Python 2.5.

Johnny 1.4 will maintain support for Django 1.1+ and Python 2.4 thru 2.7, as
previous releases have had no official deprecation policies. Future versions
will:

If Django development goals are met, this means that Johnny 1.5 will support
Django 1.3-1.5 and Python 2.6+, with experimental Python 3.3 support. This
also means that, while future versions of Johnny will be compatible with older
versions of Django, they might not be compatible with all of the supported
versions of python for these old versions.