File compression in Divio Django applications#
Default behaviour in our applications#
By default, we apply gzip compression to:
Django-served content, such as HTML files
static files, when
DEBUG
isFalse
This compression can be disabled by setting the DISABLE_GZIP
environment variable to True
.
For Django-served content, we apply Django’s GZipMiddleware
.
For static files, we use our own STATICFILES_STORAGE
classes to gzip static files after they are collected.
See GZippedStaticFilesMixin.post_process()
, in Aldryn Django’s storage.py.
Using DISABLE_GZIP
#
When gzip is disabled, gzipped versions of static files are not used (though they are still collected). A default Django storage class is used instead.
Using DEBUG = True
#
When DEBUG = True
, the non-gzipped versions of the files are loaded by templates, whether or not
DISABLE_GZIP
has been applied.
Using Django Compressor#
Django Compressor is a popular tool for additional compression functionality (for example, consolidation of multiple files into one).
When using Django Compressor, note that:
static files must be compressed before collection (
python manage.py compress
must come beforecollectstatic
in theDockerfile
)
To verify correct and expected operation of Django Compressor, use the local server in live configuration, taking note to disable volume mapping that would affect the collected compressed files.