django-cache

Extended HTTP-caching for Django


Keywords
cache, django
License
MIT
Install
pip install django-cache==0.3

Documentation

Django-cache

Enhanced cache_page decorator for Django views.

https://travis-ci.org/renskiy/django-cache.svg?branch=master https://coveralls.io/repos/github/renskiy/django-cache/badge.svg?branch=master

Compatibility

Django-cache properly works with Django 1.8, 1.9, 1.10 and 1.11 on Python 2.7, 3.4, 3.5 and 3.6.

Advantages

  • fixed certain amount of bugs (including #15855)
  • support of callable cache_timeout and key_prefix parameters
  • cache age can be limited by client (min cache age is manageable, default is 0)

Usage

from djangocache import cache_page

@cache_page(cache_timeout=600)
def view(request):
    pass

Combination with last_modified and/or etag view decorators

If you planning to use cache_page among with last_modified and/or etag the latter must be placed after cache_page:

from djangocache import cache_page
from django.views.decorators.http import last_modified, etag

def etag_generator(request, *args, **kwargs):
    return 'ETag!!'

@cache_page(cache_timeout=600)
@etag(etag_generator)
def view(request, *args, **kwargs):
    pass

Django Settings

DJANGOCACHE_MIN_AGE - used to set minimal age of cache. Default is 0, meaning that client can ask server to skip cache by providing header Cache-Control: max-age=0.

@cache_page params

  • cache_timeout. Default is settings.CACHE_MIDDLEWARE_SECONDS.
  • key_prefix. Default is settings.CACHE_MIDDLEWARE_KEY_PREFIX.
  • cache_alias. Default is settings.CACHE_MIDDLEWARE_ALIAS, or settings.DEFAULT_CACHE_ALIAS if set to None.
  • cache_min_age. Default is settings.DJANGOCACHE_MIN_AGE.

Installation

pip install --upgrade django-cache