Skip to content
This repository has been archived by the owner on Jan 6, 2020. It is now read-only.

koalalorenzo/django-smartcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-smartcc

Set some cache-related headers automatically, defining not-authenticated requests as public and authenticated requests as private. You can also customize these values for specific URLs. This middleware class will also setup these HTTP headers:

  • Vary
  • Cache-Control
  • Expires

This middleware works and is designed to integrate Django with CloudFlare Cache (or similar services). Used in production on MinbilDinbil.dk servers.

Installation

Add django-smartcc on your requirements.txt file or just launch:

pip install -U django-smartcc

Then add django-smartcc in the installed apps and in the middleware, so add these line in your settings.py file.

# settings.py
MIDDLEWARE_CLASSES += [
    'smart_cache_control.middleware.SmartCacheControlMiddleware'
]

Note: Remember that this middleware requires authentication, so it should be loaded after the django.contrib.auth.middleware.AuthenticationMiddleware!

Customization and Settings

You can customize a specific Cache-control value on each URL. For example if we want to avoid cache on /hello/ , but always have it on /api/search for 5 minutes, we should write this in our settings file:

# settings.py
SCC_CUSTOM_URL_CACHE = (
    (r'/hello/$', 'private', 0),
    (r'/api/search$', 'public', 300),
)

Other options are available to customize the behaviour of the middleware:

SCC_VARY_HEADERS: A list of strings specifying which headers to includ in the Vary header. Default value: ['Accept-Encoding', 'Accept-Language', 'Cookie']

SCC_SET_EXPIRE_HEADER: Define if the middleware should set the Expires header. Default value: True

SCC_MAX_AGE_PUBLIC: Define the default max-age value in seconds for public requests. Default value: 86400

SCC_MAX_AGE_PRIVATE: Define the default max-age value in seconds for private requests. Default value: 0

SCC_DISABLED: Disable the addition of headers, such as during development. Default value: False

About

A django Middleware that will help to set cache-control header on the views.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages